APS/SWEA

1231. [S/W 문제해결 기본] 9일차 - 중위순회 C++

문래동까마귀 2021. 11. 20. 01:38

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV140YnqAIECFAYD 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
 
using namespace std;
 
int main() {
 
    //int test_case;
    //int T;
    //cin >> T;
 
    vector<pair<int, char>>vec;
    vector<int> sun;
    for (int test_case = 1; test_case <= 10; test_case++) {
        int n;
        cin >> n;
 
        vec.clear();
        sun.clear();
 
        int num;
        char ch;
        int be_num;
        int next_num;
        for (int i = 0; i < n; i++) {
            cin >> num;
            cin >> ch;
            vec.push_back(make_pair(num, ch));
            if (i == 0) sun.push_back(num);
 
            int point;
            if (i < (n - 1) / 2) {
                cin >> be_num >> next_num;
                for (int x = 0; x < sun.size(); x++) {
                    if (sun[x] == num) point = x;
                }
                if (point - 1 < 0)
                    sun.insert(sun.begin(), be_num);
                else
                    sun.insert(sun.begin() + point, be_num);
 
                sun.insert(sun.begin() + point + 2, next_num);
            }
 
            if ((n - 1) % 2 == 1 && i == (n - 1) / 2) {
                cin >> be_num;
                for (int x = 0; x < sun.size(); x++) {
                    if (sun[x] == num) point = x;
                }
                if (point - 1 < 0)
                    sun.insert(sun.begin(), be_num);
                else
                    sun.insert(sun.begin() + point, be_num);
            }
        }
 
        cout << "#" << test_case << " ";
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (sun[i] == vec[j].first)
                    cout << vec[j].second;
            }
        }
        cout << endl;
    }
 
    return 0;
}