티스토리 뷰

1233. [S/W 문제해결 기본] 9일차 - 사칙연산 유효성 검사

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD&categoryId=AV141176AIwCFAYD&categoryType=CODE&problemTitle=1233&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

import java.io.*;
import java.util.*;
// 210209

public class Solution_D4_1233_사칙연산유효성검사 {
	
	// 1. 연산자는 두개의 숫자 자식 노드를 가져야 한다.
	// 1-1. 연산자는 리프 노드에 올 수 없다.
	// 2. 숫자는 자식 노드를 가질 수 없다.

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		for(int tc=1; tc<=10; tc++) {
			int N = Integer.parseInt(br.readLine());
			String opers = "+-*/";
			
			StringTokenizer st;
			
			int res = 1;
			
			for(int i=1; i<=N; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				if (st.countTokens() == 4) {
					st.nextToken();
					String st1 = st.nextToken();
					if(opers.contains(st1)) {
						// 다음으로 오는 자식 노드 두개가 모두 숫자여야 함
						String st3 = st.nextToken();
						String st4 = st.nextToken();
						if (opers.contains(st3) || opers.contains(st4)) {
							 // 한번이라도 잘못된 입력값이 들어오면 res는 0이 된다.		
							res = 0;
						}
					} else {
						// 길이가 4인데 부모노드로 연산자가 들어오지 않아도 잘못된 경우
						res = 0;
					}
				} else { // 길이가 2일 때
					st.nextToken();
					String st1 = st.nextToken();
					if(opers.contains(st1)) {
						 // 한번이라도 잘못된 입력값이 들어오면 res는 0이 된다.		
						res = 0;
					}
				}

			} // for
			System.out.println("#" + tc + " " + res);
			
		} // for
		
		br.close();
	}

}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/07   »
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
글 보관함