[java][swea][d4] 1233. 사칙연산 유효성 검사
728x90

문제

 

SW Expert Academy

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

swexpertacademy.com

풀이

/*
 * 1. 테스트 케이스는 10개
 * 2. 첫 줄에 정점의 총  수 N
 * 3. 연산이 가능하면 1, 불가능하면 0
 * 4. 출력: "#" + tc + " " + result
 * 
 * >> 서브 트리가 없는데 숫자가 아니면 무조건 불가능
 * >> 서브 트리가 있는데 사칙연산이 아니면 무조건 불가능
 * >> st 길이 잰 뒤 2번째 문자 보기 >> 유효하지 않은 트리라면 0을 출력한 뒤 남은 식들은 건너뛴다.  
 */

 

코드

package com.ssafy.im;

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

public class D4_1233_사칙연산유효성검사 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		File file = new File("D4_1233_사칙연산유효성검사.txt");
		BufferedReader br = new BufferedReader(new FileReader(file));
		//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		outer: for(int tc = 1; tc <= 10; tc++) {
			int N = Integer.parseInt(br.readLine());
			
			for(int i = 1; i <= N; i++) {
				StringTokenizer st = new StringTokenizer(br.readLine());
				
				st.nextToken();
				String s = st.nextToken(); //정점 저장
				
				if(st.countTokens()==0 && (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/"))) {
					//서브 트리가 있는데 정점에 연산자가 있는 경우 연산 불가능
					System.out.println("#" + tc + " 0");
					for(int j = 0; j<N-i; j++) br.readLine(); //남은 식은 필요없기 때문에 건너뛰기
					continue outer;
				}
				else if(st.countTokens()==2 && !(s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/"))) {
					//서브 트리가 있는데 정점에 연산자가 있는 경우 연산 불가능
					System.out.println("#" + tc + " 0");
					for(int j = 0; j<N-i; j++) br.readLine(); //남은 식은 필요없기 때문에 건너뛰기
					continue outer;
				}
			}
			System.out.println("#" + tc + " 1");
		}
	}

결과

 

#자바 #java #swea #알고리즘

728x90