https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD
출처는 아래의 사이트임을 명시합니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 문제
트리의 운행을 요구하는 문제, 후위 연산식을 이해할 수 있는가?
[입력]
각 테스트 케이스의 첫 줄에는 각 케이스의 트리가 갖는 정점의 총 수 N(1≤N≤200)이 주어진다.
그 다음 N줄에 걸쳐 각각의 정점 정보가 주어진다.
해당 정점에 대한 정보는 해당 정점의 알파벳, 해당 정점의 왼쪽 자식, 오른쪽 자식의 정점번호가 차례대로 주어진다.
정점 번호는 1부터 N까지의 정수로 구분된다. 입력에서 정점 번호를 매기는 규칙은 위와 같으며, 루트 정점의 번호는 반드시 1이다.
입력에서 이웃한 숫자 또는 연산자, 자식 정점의 번호는 모두 공백으로 구분된다.
위의 예시에서, 숫자 8이 4번 정점에 해당하면 “4 8”으로 주어지고, 연산자 ‘/’가 2번 정점에 해당하면 두 자식이 각각 숫자 ‘8’인 4번 정점과 숫자 ‘2’인 5번 정점이므로 “2 / 4 5”로 주어진다.
총 10개의 테스트 케이스가 주어진다.
2. 정답코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
static int answer = 1;
static String[] node;
static int N;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
for (int test_Case = 1; test_Case <= 10; test_Case++) {
StringTokenizer st = new StringTokenizer(in.readLine());
N = Integer.parseInt(st.nextToken());
node = new String[N + 1];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(in.readLine());
st.nextToken();
node[i + 1] = st.nextToken();
}
answer = 1;
dfsByPostOrder(1);
System.out.printf("#%d ", test_Case);
System.out.println(answer);
}
}
public static void dfsByPostOrder(int current) {
if (answer == 0)
return;
if (current * 2 <= N) {
if ((node[current].charAt(0) >= '0' && node[current].charAt(0) <= '9')) {
answer = 0;
return;
}
dfsByPostOrder(current * 2);
} else {
if (!(node[current].charAt(0) >= '0' && node[current].charAt(0) <= '9')) {
answer = 0;
return;
}
}
// 잎노드
if (current * 2 + 1 <= N) {
dfsByPostOrder(current * 2 + 1);
}
}
}
'노력만이 살길! > 알고리즘' 카테고리의 다른 글
[JAVA][SWEA] 7272 안경이 없어 (0) | 2022.02.25 |
---|---|
[JAVA][백준] 1592 영식이와 친구들 (0) | 2022.02.25 |
[JAVA][SWEA][D3] 9229. 한빈이와 Spot Mart (0) | 2022.02.13 |
[JAVA][SWEA][모의SW] 1952번 수영장 이용요금 (0) | 2022.02.10 |
[JAVA][SWEA] 1210번 [S/W 문제해결 기본] Ladder1 (0) | 2022.02.10 |