[SWEA] 1233. 사칙연산 유효성 검사 (C++, 라이브러리 X)
Algorithm 카테고리의 다른 글
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;
}
댓글남기기