728x90
반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD
문제 접근
이진 트리에서 부모 노드에는 항상 연산자 기호가 있어야 하고, 리프 노드에는 항상 양의 정수가 있어야지 계산이 가능하다고 판단할 수 있습니다. 인덱스가 1부터 시작한다고 하였을 때, 리프 노드는 (전체 노드의 수 / 2)의 내림값 보다 큰 인덱스에 위치하는 노드들이고, non-leaf 노드들은 1부터 (전체 노드의 수 / 2)의 내림값까지의 인덱스에 해당하는 노드들이라는 것을 이용하여 문제를 풀었습니다.
입력값을 보았을 때는 트리를 모두 구현하고 판별하라는 의도인 것 같은데, 굳이 그렇게 안하도 풀 수 있었기에 필요없는 입력값은 trash로 입력받아 처리해버렸습니다.
구현 코드
#include<iostream>
using namespace std;
bool isOper(char c){
if(c == '+' || c == '-' || c == '*' || c == '/')
return true;
return false;
}
int main(int argc, char** argv)
{
int test_case;
int T = 10;
int num_node;
int idx;
char data;
bool result;
int trash;
for(test_case = 1; test_case <= T; ++test_case)
{
cin >> num_node;
result = 1;
for(int i = 1; i <= num_node; i++){
cin >> idx >> data;
if(i <= num_node / 2){
if(data >= '0' && data <= '9'){
result = 0;
}
if(i == num_node/2 && num_node % 2 == 0)
cin >> trash;
else cin >> trash >> trash;
}else{
if(!(data>= '0' && data <= '9')) {
result = 0;
}
}
}
cout << "#" << test_case << " " << result << '\n';
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
728x90
반응형
'나의 경험 > 삼성전자 DX 알고리즘 역량 강화 특강' 카테고리의 다른 글
[SWEA] 3000. 중간값 구하기 (0) | 2024.02.13 |
---|---|
[SWEA] 1251 하나로 (1) | 2024.02.06 |
[SWEA] 1248 공통조상 (c++) (1) | 2024.01.30 |
[SWEA] 1232 사칙연산(c++) (0) | 2024.01.30 |
[SWEA] 1230 암호문3 (C++) (0) | 2024.01.27 |