갱스타
갱스타의 블로그
갱스타
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • TIL(Today I Learned) (10)
    • 노력만이 살길! (58)
      • 알고리즘 (29)
      • 네트워크 (3)
      • Python (1)
      • Spring Boot (1)
      • 합격하기 (0)
      • Adsp (3)
      • SQLD (10)
      • 데이터분석 (5)
      • 취업일기 (4)
      • IT 프로젝트 관리 (1)
      • 운영체제 (1)
    • Life (10)
      • 일상 그리고 리뷰 (10)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SW Expert Academy
  • 네트워크
  • 백준 참외밭
  • 통신
  • 백준
  • SWEA 13038
  • 달팽이문제
  • java 알고리즘
  • mac 단축키
  • Get
  • swea
  • post
  • 알고리즘
  • 백준 알고리즘
  • 싸피
  • 달팽이 반복문
  • 싸피7기
  • 싸피합격
  • 백준 2477번
  • 백준 달팽이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갱스타

갱스타의 블로그

[JAVA][SWEA][S/W 문제해결 기본]1233번 사칙연산 유효성 검사
노력만이 살길!/알고리즘

[JAVA][SWEA][S/W 문제해결 기본]1233번 사칙연산 유효성 검사

2022. 2. 13. 00:36

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD 

출처는 아래의 사이트임을 명시합니다.

 

SW Expert Academy

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

swexpertacademy.com

1. 문제

트리의 운행을 요구하는 문제, 후위 연산식을 이해할 수 있는가?

[입력]
각 테스트 케이스의 첫 줄에는 각 케이스의 트리가 갖는 정점의 총 수 N(1≤N≤200)이 주어진다.
그 다음 N줄에 걸쳐 각각의 정점 정보가 주어진다.
해당 정점에 대한 정보는 해당 정점의 알파벳, 해당 정점의 왼쪽 자식, 오른쪽 자식의 정점번호가 차례대로 주어진다.
정점 번호는 1부터 N까지의 정수로 구분된다. 입력에서 정점 번호를 매기는 규칙은 위와 같으며, 루트 정점의 번호는 반드시 1이다.
입력에서 이웃한 숫자 또는 연산자, 자식 정점의 번호는 모두 공백으로 구분된다.
위의 예시에서, 숫자 8이 4번 정점에 해당하면 “4 8”으로 주어지고, 연산자 ‘/’가 2번 정점에 해당하면 두 자식이 각각 숫자 ‘8’인 4번 정점과 숫자 ‘2’인 5번 정점이므로 “2 / 4 5”로 주어진다.
총 10개의 테스트 케이스가 주어진다.

 

2. 정답코드

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	static int answer = 1;
	static String[] node;
	static int N;

	public static void main(String[] args) throws Exception {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		for (int test_Case = 1; test_Case <= 10; test_Case++) {
			StringTokenizer st = new StringTokenizer(in.readLine());
			N = Integer.parseInt(st.nextToken());
			node = new String[N + 1];
			for (int i = 0; i < N; i++) {
				st = new StringTokenizer(in.readLine());
				st.nextToken();
				node[i + 1] = st.nextToken();
			}
			answer = 1;
			dfsByPostOrder(1);
			System.out.printf("#%d ", test_Case);
			System.out.println(answer);
		}
	}

	public static void dfsByPostOrder(int current) {
		if (answer == 0)
			return;

		if (current * 2 <= N) {
			if ((node[current].charAt(0) >= '0' && node[current].charAt(0) <= '9')) {
				answer = 0;
				return;
			}
			dfsByPostOrder(current * 2);
		} else {
			if (!(node[current].charAt(0) >= '0' && node[current].charAt(0) <= '9')) {
				answer = 0;
				return;
			}
		}
		// 잎노드
		if (current * 2 + 1 <= N) {
			dfsByPostOrder(current * 2 + 1);
		}
	}

}

'노력만이 살길! > 알고리즘' 카테고리의 다른 글

[JAVA][SWEA] 7272 안경이 없어  (0) 2022.02.25
[JAVA][백준] 1592 영식이와 친구들  (0) 2022.02.25
[JAVA][SWEA][D3] 9229. 한빈이와 Spot Mart  (0) 2022.02.13
[JAVA][SWEA][모의SW] 1952번 수영장 이용요금  (0) 2022.02.10
[JAVA][SWEA] 1210번 [S/W 문제해결 기본] Ladder1  (0) 2022.02.10
    '노력만이 살길!/알고리즘' 카테고리의 다른 글
    • [JAVA][SWEA] 7272 안경이 없어
    • [JAVA][백준] 1592 영식이와 친구들
    • [JAVA][SWEA][D3] 9229. 한빈이와 Spot Mart
    • [JAVA][SWEA][모의SW] 1952번 수영장 이용요금
    갱스타
    갱스타
    열심히 배워보자

    티스토리툴바