본문 바로가기

트리/이진 트리

사칙연산 유효성 검사

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

 

SW Expert Academy

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

swexpertacademy.com

 

연산이 가능하려면 가운데에 연산자가 들어가야한다.

트리가 완전 이진 트리 형식으로 주어지므로

트리가 갖는 정점 개수가 N이면

N/2번 정점까지는 자식 노드를 가진다.

 

따라서 유효하지 않은 경우는 두 가지다.

1. 정점 번호가 N/2 이하일 때, 숫자를 가짐

2. 정점 번호가 N/2보다 클 때, 연산자를 가짐

 

<소스 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
 
int main()
{
    for (int t = 1; t <= 10; t++)
    {
        int n;
        cin >> n;
 
        int ans = 1;
        for (int i = 1; i <= n; i++)
        {
            char ch;
            cin >> i >> ch;
 
            if (i <= n / 2)
            {
                int left, right;
                if (i == n / 2 && n % 2 == 0)
                    cin >> left;
                else
                    cin >> left >> right;
 
                if (ch >= '0' && ch <= '9')
                    ans = 0;
            }
            else
            {
                if (!(ch >= '0' && ch <= '9'))
                    ans = 0;
            }
        }
        cout << '#' << t << ' ' << ans << '\n';
    }
    return 0;
}
cs

'트리 > 이진 트리' 카테고리의 다른 글

코드트리 메신저  (0) 2024.03.07
상품권 배분  (0) 2024.02.22
이진 트리 기초  (0) 2024.01.12