백준 1068 트리(JAVA)

2024. 8. 7. 17:38·PS(Problem Solving)/JAVA

문제 설명

https://www.acmicpc.net/problem/1068

 

풀이과정

 List 배열을 이용해서 tree 정보를 저장했다. 그리고 DFS를 통해서 리프 노드의 개수를 더해주도록 풀이했다.

 

정답코드

import java.io.*;
import java.util.*;

public class Main {

    static int N;
    static List<Integer>[] tree;
    static int root, remove;
    static int result = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        N = Integer.parseInt(br.readLine());

        tree = new ArrayList[N];
        for (int i = 0; i < N; i++) {
            tree[i] = new ArrayList<>();
        }

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            int parent = Integer.parseInt(st.nextToken());

            if (parent == -1) {
                root = i;
            } else {
                tree[parent].add(i);
            }
        }

        remove = Integer.parseInt(br.readLine());

        if (remove == root) {
            bw.write("0");
            bw.flush();
            return;
        }

        dfs(root);

        bw.write(String.valueOf(result));
        bw.flush();
    }

    public static void dfs(int node) {
        if (node == remove) {
            return;
        }

        int childCnt = 0;
        for (int child : tree[node]) {
            if (child != remove) {
                childCnt++;
                dfs(child);
            }
        }

        if (childCnt == 0) {
            result++;
        }
    }
}
저작자표시 비영리 변경금지 (새창열림)
'PS(Problem Solving)/JAVA' 카테고리의 다른 글
  • 백준 15686 치킨 배달(JAVA)
  • 백준 17298 오큰수(JAVA)
  • 백준 2636 치즈(JAVA)
  • 백준 14502 연구소(JAVA)
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (150)
      • PS(Problem Solving) (95)
        • C (25)
        • C++ (33)
        • JAVA (37)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (6)
        • Spring (5)
      • Front-end (1)
        • React (1)
      • JAVA (4)
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
백준 1068 트리(JAVA)
상단으로

티스토리툴바