[SWEA] 1233. 사칙연산 유효성 검사 (C++, 라이브러리 X)


Tree 기본문제

풀이

Tree 기본문제이지만 Tree를 만들 필요가 없음.

입력을 받는 단계에서 유효성 검사 가능.

노드가 연산자일 경우 두개의 자식 노드가 존재해야하고, 수일 경우 자식 노드가 없어야함.

노드의 인덱스 * 2 가 N 보다 작을 경우 두개의 자식 노드가 존재하고, 클 경우 자식 노드가 없음.

인덱스 * 2 가 N과 같을 경우(N이 짝수일 경우) 는 자식 노드가 하나밖에 없는 노드가 존재하므로 연산 불가능.

코드 GitHub

#include <iostream>
using namespace std;

char str[20];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    freopen("input.txt", "r", stdin);
    for(int tc = 1; tc <= 10; tc++) {
        int N;
        cin >> N;
        bool pos = true;
        for(int n = 0; n < N; n++) {
            if(!pos) {
                cin.getline(str, 20);
                continue;
            }
            int idx;
            cin >> idx;
            if(idx * 2 < N) {
                char a;
                cin >> a;
                if(a >= '0' && a <= '9') {
                    pos = false;
                    cin.getline(str, 20);
                    continue;
                }
                int b, c;
                cin >> b >> c;
            } else if(idx * 2 == N) {
                pos = false;
                cin.getline(str, 20);
                continue;
            } else {
                char a;
                cin >> a;
                if(a < '0' || a > '9') {
                    pos = false;
                    cin.getline(str, 20);
                    continue;
                }
            }
        }
        cout << '#' << tc << ' ' << pos << '\n';
    }
    return 0;
}

댓글남기기