Zayson
A to Zayson!
Zayson
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • ์™„์ „ํƒ์ƒ‰(Brute-Force) (3)
      • ๊ทธ๋ฆฌ๋””(Greedy) (6)
      • ํˆฌํฌ์ธํ„ฐ(Two-Pointer) (1)
      • ๊ทธ๋ž˜ํ”„(Graph) (5)
      • BFS & DFS (9)
      • ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Implementation) (5)
      • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • ํšŒ๊ณ  (5)
      • ์—”๋นต ํ”„๋กœ์ ํŠธ ํฌ์ŠคํŠธ ๋กœ๋“œ๋งต (1)
      • 2022๋…„ (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • ๊ธฐ์ˆ  ์„œ์  (6)
      • ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ (3)
      • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๋ณตํ•ด์•ผํ•  ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ๋””์ž์ธ ํŒจํ„ด (2)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „ ์ž…๋ฌธ
  • ๊ตฌํ˜„
  • Java
  • Kafka Connect
  • kafka
  • ๊ทธ๋ฆฌ๋””
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • BFS
  • CS
  • JPA
  • Computer science
  • ๋ฐฑ์ค€
  • dfs
  • Backend
  • ๋ผ์ด๋ธŒ์Šคํ„ฐ๋””
  • ๋‚˜ ํ˜ผ์ž ์Šคํ”„๋ง๋ถ€ํŠธ!
  • ์—”๋นตํ”„๋กœ์ ํŠธ
  • spring boot
  • SpringBoot
  • ์™„์ „ํƒ์ƒ‰

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Zayson

A to Zayson!

[๋ฐฑ์ค€, Java] 1068๋ฒˆ : ํŠธ๋ฆฌ
Algorithm/BFS & DFS

[๋ฐฑ์ค€, Java] 1068๋ฒˆ : ํŠธ๋ฆฌ

2022. 5. 8. 15:54

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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

๐Ÿ˜ฎ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Map์„ ์ด์šฉํ•ด ๊ตฌํ˜„์— ํ•„์š”ํ•œ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ค€ ํ›„ DFS๋ฅผ ์ด์šฉํ•ด ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค.

  1. Map์—์„œ ํ˜„์žฌ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๋‹จ๋ง ๋…ธ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋ง ๋…ธ๋“œ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  2. ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œํ•  ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ ๋…ธ๋“œ๋“ค์€ ๋ชจ๋‘ ์‚ญ์ œ ๋˜๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ returnํ•œ๋‹ค.
  3. ๋งŒ์•ฝ ํ˜„์žฌ ๋…ธ๋“œ์—์„œ ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๋…ธ๋“œ์ด๋ฉด์„œ ๋‹จ๋ง ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ๋Š” ์‚ญ์ œ ํ›„ ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ๋‹จ๋ง๋…ธ๋“œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋ง ๋…ธ๋“œ ์นด์šดํŠธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

๐Ÿšฉ Java ์ฝ”๋“œ

package com.algorithm.Baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main_1068_ํŠธ๋ฆฌ {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        Map<Integer, List<Integer>> tree = new HashMap<>();
        // ํŠธ๋ฆฌ ์ดˆ๊ธฐํ™”
        for (int node = 0; node < N; node++) {
            tree.put(node, new LinkedList<>());
        }

        StringTokenizer st = new StringTokenizer(br.readLine());
        int rootNode = 0;

        // ํŠธ๋ฆฌ ์—ฐ๊ฒฐ
        for (int node = 0; node < N; node++) {
            int parent = Integer.parseInt(st.nextToken());
            if (parent != -1) {
                tree.get(parent).add(node);
            } else {
                rootNode = node;
            }
        }

        // ์ œ๊ฑฐํ•  ๋…ธ๋“œ
        int removeNode = Integer.parseInt(br.readLine());
        leaf = 0;

        getLeafNode(rootNode, removeNode, tree);
        System.out.println(leaf);

        br.close();
    }

    private static int leaf;

    private static void getLeafNode(int start, int remove, Map<Integer, List<Integer>> tree) {
        // ์‚ญ์ œํ•  ๋…ธ๋“œ ๋„๋‹ฌ ์‹œ ์ดํ›„๋Š” DFS ์•ˆํ•จ
        if (start == remove) {
            return;
        }

        // ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋ฆฌํ”„๋…ธ๋“œ
        if (tree.get(start).size() < 1) {
            leaf++;
            return;
        }

      // ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ ๋ฐ ์ž์‹ ๋…ธ๋“œ ๋ฐฉ๋ฌธ
        for (int next : tree.get(start)) {
			// ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œํ•  ๋…ธ๋“œ์ด๊ณ , ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ํ•œ๊ฐœ์ธ ๊ฒฝ์šฐ -> ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋‹จ๋ง ๋…ธ๋“œ์ธ ๊ฒฝ์šฐ
            if(next == remove && tree.get(start).size() == 1) {
                leaf++;
            }
            getLeafNode(next, remove, tree);
        }
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > BFS & DFS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€, Java] 9934๋ฒˆ : ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ  (0) 2022.05.20
[๋ฐฑ์ค€, Java] 16928๋ฒˆ : ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„  (0) 2022.05.09
[๋ฐฑ์ค€, Java] 1967๋ฒˆ : ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„  (0) 2022.05.08
[๋ฐฑ์ค€, Java] 2573๋ฒˆ : ๋น™์‚ฐ  (0) 2022.05.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, Java] ๋น›์˜ ๊ฒฝ๋กœ ์‚ฌ์ดํด  (0) 2022.04.28
    'Algorithm/BFS & DFS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋ฐฑ์ค€, Java] 16928๋ฒˆ : ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„
    • [๋ฐฑ์ค€, Java] 1967๋ฒˆ : ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„
    • [๋ฐฑ์ค€, Java] 2573๋ฒˆ : ๋น™์‚ฐ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, Java] ๋น›์˜ ๊ฒฝ๋กœ ์‚ฌ์ดํด
    Zayson
    Zayson
    ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”