728x90
문제
풀이
/*
* 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
'알고리즘 > SWEA' 카테고리의 다른 글
[java][swea][d3] 6808. 규영이와 인영이의 카드게임 (0) | 2022.02.14 |
---|---|
[java][swea][d4] 5432. 쇠막대기 자르기 (0) | 2022.02.10 |
[java][swea][d4] 1224. 계산기3 (0) | 2022.02.09 |
[java][swea][d4] 1223. 계산기2 (0) | 2022.02.09 |
[java][swea][d4] 1861. 정사각형 방 (0) | 2022.02.09 |