[D4] [S/W 문제해결 기본] 9일차 - 사칙연산 유효성 검사 - 1233
성능 요약
메모리: 18,612 KB, 시간: 105 ms, 코드길이: 1,313 Bytes
제출 일자
2024-01-04 23:18
접근 방법
1. 예제로 있는 그래프는 중위순회를 통하여 계산이 되어야하는 그래프이다.
2. 중위 순회 그래프의 특징은 피연산자는 전부 리프 노드여야한다는 것이다.
3. 값을 입력 받으면서 만약 입력 받은 값이
- 피연산자라면 리프 노드인지 확인하고 ( 자식 노드가 없어야 함)
- 연산자라면 리프 노드가 아닌지 확인한다. ( 자식 노드가 있어야 한다.)
풀이 코드
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Solution {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
for(int tc = 1; tc <= 10; tc++) {
int n = Integer.parseInt(br.readLine());
int answer = 1;
// 값을 입력 받을 때는 접근을 인덱스로 하기 위해서 배열로 한다.
// 연산자면 false, 피연산자라면 true
for(int i = 1; i <= n; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
// 노드의 번호는 받아줄 필요 없다.
st.nextToken();
// 노드의 value값 저장 후 연산자인지 아닌지 저장한다.
char value = st.nextToken().charAt(0);
boolean digit = Character.isDigit(value);
// 자식 노드가 있다면 연산자여야 한다.
if (st.hasMoreTokens()){
// 만약 숫자(피연산자)라면 유효하지 않는 사칙연산
if(digit){
answer = 0;
}
}
// 자식 노드가 없다면 피연산자여야한다.
else{
// 만약 연산자라면 유효하지 않는 사칙연산
if(!digit){
answer = 0;
}
}
}
sb.append("#" + tc + " " + answer).append("\n");
}
System.out.println(sb);
}
}
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
'알고리즘 - SWEA > D4' 카테고리의 다른 글
[백준] 14502번 : 연구소 Gold4(골드4) - JAVA[자바] (1) | 2024.01.07 |
---|---|
[SW expert Academy] SWEA 7829번 보물왕 태혁 자바(Java) (1) | 2024.01.05 |
[SW expert Academy] SWEA 1231번 중위순회 자바(Java) (1) | 2024.01.04 |
[SW expert Academy] SWEA 1227번 미로2 자바(Java) (0) | 2024.01.02 |
[SW expert Academy] SWEA 1219번 길찾기 자바(Java) (0) | 2024.01.02 |