SWEA1233 사칙연산 유효성 검사

이진 트리에 관한 문제이지만, 입력의 규칙성을 찾아낸다면 이진트리에 대한 이해가 없이도 쉽게 풀 수 있다.

연산이 가능한 경우는 모두 리프 노드(최하위 노드)가 숫자로 구성되고, 나머지 노드는 연산자로 구성되어 있다.

입력에서 리프노드가 가장 마지막에 들어오기 때문에 해당 조건만 확인하면 원하는 답을 얻을 수 있다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Solution {
	static BufferedReader br;
	static BufferedWriter bw;
	static StringTokenizer st;

	public static void main(String[] args) throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		bw = new BufferedWriter(new OutputStreamWriter(System.out));
		// 숫자 > (int) 48
		for (int tc = 1; tc <= 10; tc++) {
			int N = Integer.parseInt(br.readLine());
			int pass = 1;
			if (N % 2 == 0) {
				pass = 0;
				for (int i = 0; i < N; i++) {
					br.readLine();
				}
			} else {
				for (int i = 0; i < N / 2; i++) {
					st = new StringTokenizer(br.readLine(), " ");
					st.nextToken();
					if (st.nextToken().charAt(0) >= 48)
						pass = 0;
					if (st.nextToken().charAt(0) < 48)
						pass = 0;
					if (st.nextToken().charAt(0) < 48)
						pass = 0;
				}
				for (int i = N / 2; i < N; i++) {
					if (br.readLine().charAt(0) < 48)
						pass = 0;
				}
			}
			bw.append(String.format("#%d %d\n", tc, pass));
		}
		bw.flush();
		bw.close();
	}
}

좋은 웹페이지 즐겨찾기