알고리즘/SWEA

[Java] SWEA 1233번 사칙연산 유효성 검사

컴공맨 2021. 2. 19. 16:11
 

SW Expert Academy

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

swexpertacademy.com


풀이

배열에서 해당 노드에 자식노드가 있다면 인덱스는 전체 배열크기인 N의 절반보다 작은 수 즉, N / 2보다 작거나 같아야 하고 반대로 리프노드인 경우는 N / 2보다 커야합니다.

또한, 리프노드에는 숫자만 들어올 수 있고 리프노드가 아닐때만 연산자가 들어갈 수 있으므로 이를 이용하여 해결하였습니다.


코드

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

public class Solution {
	public static int N;
	public static String[] tree;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		StringTokenizer st;
		
		for (int tc = 1; tc <= 10; ++tc) {
			N = Integer.parseInt(br.readLine());
			
			tree = new String[N + 1];
			int answer = 1;
			
			for (int i = 0; i < N; ++i) {
				st = new StringTokenizer(br.readLine());
				tree[Integer.parseInt(st.nextToken())] = st.nextToken();
			}
			
			int nodeIdx = N / 2;
			for (int i = 1; i < N + 1; ++i) {
				if (tree[i].charAt(0) >= '0' && tree[i].charAt(0) <= '9') {
					if (i <= nodeIdx) {
						answer = 0;
						break;
					}
				}
				else {
					if (i > nodeIdx) {
						answer = 0;
						break;
					}
				}
			}
			
			sb.append("#").append(tc).append(" ").append(answer).append("\n");
		}
		
		System.out.println(sb);
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com