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)

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

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

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

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

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

A to Zayson!

[๋ฐฑ์ค€, Java] 1967๋ฒˆ : ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„
Algorithm/BFS & DFS

[๋ฐฑ์ค€, Java] 1967๋ฒˆ : ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„

2022. 5. 8. 16:01

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

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

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

Map์„ ์ด์šฉํ•ด ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

๋ฌธ์ œ์—์„œ ๋ฃจํŠธ๋…ธ๋“œ๊ฐ€ 1์ด๋ผ๊ณ  ์ฃผ์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•œ๋‹ค.

๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด, ํ•ด๋‹น ๋…ธ๋“œ๋กœ ๋‹ค์‹œ ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด ๋…ธ๋“œ์™€ ๋…ธ๋“œ๊ฐ„ ๊ฐ€์žฅ ๋จผ ์ง€๋ฆ„์ด ํƒ์ƒ‰๋œ๋‹ค.

  1. ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ด์šฉํ•ด DFS ํƒ์ƒ‰ ๋ฐ ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ ์ฐพ๊ธฐ
  2. ํƒ์ƒ‰ํ•œ ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ๋ฅผ ์ด์šฉํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ DFS ํƒ์ƒ‰ ๋ฐ ์ง€๋ฆ„ ๊ฐฑ์‹ 

๐Ÿšฉ Java ์ฝ”๋“œ

package com.algorithm.Baekjoon;

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

public class Main_1967_ํŠธ๋ฆฌ์˜_์ง€๋ฆ„ {
    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<Node>> tree = new HashMap<>();

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

        // ํŠธ๋ฆฌ ์—ฐ๊ฒฐ
        for (int edge = 0; edge < N - 1; edge++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int parent = Integer.parseInt(st.nextToken());
            int child = Integer.parseInt(st.nextToken());
            int weight = Integer.parseInt(st.nextToken());

            tree.get(parent).add(new Node(child, weight));
            tree.get(child).add(new Node(parent, weight));
        }

        int rst = getTreeLength(N, tree);
        System.out.println(rst);
        br.close();
    }

    private static int getTreeLength(int size, Map<Integer, List<Node>> tree) {
        startNode = maxStartLength = 0;
        boolean[] visited = new boolean[size + 1];

        // ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ ์ฐพ๊ธฐ
        getMaxLength(1, visited, tree,  0);

        // ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ๋กœ ๋‹ค์‹œ DFS
        visited = new boolean[size + 1];
        maxStartLength = 0;     // ์ตœ์žฅ ์ง€๋ฆ„ ๊ธธ์ด ์ดˆ๊ธฐํ™”
        getMaxLength(startNode, visited, tree, 0);
        return maxStartLength;
    }

    private static int startNode, maxStartLength;
    private static void getMaxLength(int node, boolean[] visited, Map<Integer, List<Node>> tree, int weight) {
        visited[node] = true;
        for (Node next : tree.get(node)) {
            if (!visited[next.getNode()]) {
                if (next.getWeight() + weight > maxStartLength) {
                    startNode = next.getNode();
                    maxStartLength = next.getWeight() + weight;
                }
                getMaxLength(next.getNode(), visited, tree, weight + next.getWeight());
            }
        }
    }

    static class Node {
        private int node;
        private int weight;

        public Node(int node, int weight) {
            this.node = node;
            this.weight = weight;
        }

        public int getNode() {
            return node;
        }

        public int getWeight() {
            return weight;
        }
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

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

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