기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - SWEA/D4

[SW expert Academy] SWEA 1233번 사칙연산 유효성 검사 자바(Java)

2024. 1. 4. 23:29

[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

 

SW Expert Academy

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

swexpertacademy.com

 

'알고리즘 - 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
    '알고리즘 - SWEA/D4' 카테고리의 다른 글
    • [백준] 14502번 : 연구소 Gold4(골드4) - JAVA[자바]
    • [SW expert Academy] SWEA 7829번 보물왕 태혁 자바(Java)
    • [SW expert Academy] SWEA 1231번 중위순회 자바(Java)
    • [SW expert Academy] SWEA 1227번 미로2 자바(Java)
    기몽수
    기몽수

    티스토리툴바