b24445. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 2

2025. 3. 6. 00:03ยทAlgorithm & Data Structures/BOJ

 

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

 

 

 

๐Ÿ“Œ ์ž๋ฐ”(Java)๋กœ ํ‘ธ๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS) - ๋ฐฑ์ค€ 24445 ๋ฌธ์ œ ํ’€์ด ๐Ÿš€


๐Ÿ”Ž ๋ฌธ์ œ ๊ฐœ์š”

์ด ๋ฌธ์ œ๋Š” ๋ฐฑ์ค€ 24445๋ฒˆ - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 2 ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์ธ BFS(๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰) ๊ณผ์ •์€ 24444๋ฒˆ๊ณผ ๋™์ผํ•˜์ง€๋งŒ,
์ด๋ฒˆ์—๋Š” ์ •์  ๋ฐฉ๋ฌธ ์ˆœ์„œ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

5 5 1
1 4
1 2
2 3
2 4
3 4

๐Ÿ’ก ์˜ˆ์ œ ์ถœ๋ ฅ

1
4
3
2
5

โžก BFS ํƒ์ƒ‰ ์‹œ ์ •์ ์„ ํฐ ์ˆซ์ž๋ถ€ํ„ฐ ๋ฐฉ๋ฌธํ•˜๋„๋ก ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ›  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์€ 24444๋ฒˆ ๋ฌธ์ œ์™€ ๋™์ผํ•˜์ง€๋งŒ,
๊ฐ ์ •์ ์˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ(Collections.reverseOrder())์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น Java ์ฝ”๋“œ ํ•ด์„ค

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

public class b24445 {

    static int N, M, R;
    static ArrayList<Integer>[] list;
    static boolean[] isVisited;
    static Queue<Integer> q = new ArrayDeque<>();
    static int[] result;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        N = stoInt(st.nextToken());
        M = stoInt(st.nextToken());
        R = stoInt(st.nextToken());
        isVisited = new boolean[N + 1];
        result = new int[N + 1];
        list = new ArrayList[N + 1];

        inputAndSort(br);  // ์ž…๋ ฅ ๋ฐ ์ •๋ ฌ ์ฒ˜๋ฆฌ

        BFS(R);  // BFS ์‹คํ–‰

        printResult();  // ๊ฒฐ๊ณผ ์ถœ๋ ฅ
    }

    // ์ž…๋ ฅ ๋ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
    private static void inputAndSort(BufferedReader br) throws IOException {
        for (int i = 0; i <= N; i++) {
            list[i] = new ArrayList<>();
        }

        for (int i = 0; i < M; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int a = stoInt(st.nextToken());
            int b = stoInt(st.nextToken());
            list[a].add(b);
            list[b].add(a);
        }

        // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ (ํฐ ์ˆซ์ž๋ถ€ํ„ฐ ๋ฐฉ๋ฌธ)
        for (int i = 0; i <= N; i++) {
            list[i].sort(Collections.reverseOrder());
        }
    }

    static int stoInt(String s) {
        return Integer.parseInt(s);
    }

    // BFS ๊ตฌํ˜„
    static void BFS(int r) {
        int count = 1;
        q.add(r);
        isVisited[r] = true;

        while (!q.isEmpty()) {
            int now = q.poll();
            result[now] = count++;

            for (int num : list[now]) {
                if (!isVisited[num]) {
                    q.add(num);
                    isVisited[num] = true;
                }
            }
        }
    }

    // ๊ฒฐ๊ณผ ์ถœ๋ ฅ
    private static void printResult() {
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= N; i++) {
            sb.append(result[i]).append("\n");
        }
        System.out.println(sb);
    }
}

๐Ÿ”ฅ ํ•ต์‹ฌ ์š”์•ฝ

โœ… BFS ๋ฐฉ์‹์€ ๋™์ผํ•˜์ง€๋งŒ, ์ •์  ์ •๋ ฌ ๋ฐฉ์‹๋งŒ ๋‹ค๋ฆ„
โœ… 24444๋ฒˆ(์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ) โ†’ Collections.sort() ์‚ฌ์šฉ
โœ… 24445๋ฒˆ(๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ) โ†’ Collections.sort(Collections.reverseOrder()) ์‚ฌ์šฉ
์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š”์™€ ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ˜Š

 

 

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

b.9370 ๋ฏธํ™•์ธ ๋„์ฐฉ์ง€  (0) 2025.03.15
b.1707 ์ด๋ถ„ ๊ทธ๋ž˜ํ”„  (0) 2025.03.12
b24444. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 1  (0) 2025.03.04
b24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2  (0) 2025.03.01
b3015. ์˜ค์•„์‹œ์Šค ์žฌ๊ฒฐํ•ฉ  (0) 2025.02.25
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b.9370 ๋ฏธํ™•์ธ ๋„์ฐฉ์ง€
  • b.1707 ์ด๋ถ„ ๊ทธ๋ž˜ํ”„
  • b24444. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 1
  • b24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (316) N
      • Algorithm & Data Structures (238) N
        • BOJ (96) N
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (25)
        • SQL (19)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ „์œ„์ˆœํšŒ
    BFS
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    SQL
    ๊ฒฝ๋กœ์••์ถ•
    ๊ณจ๋“œ
    ํˆฌํฌ์ธํ„ฐ
    algorithm
    unionfind
    binarySearch
    baekjoon
    Dijkstra
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    Java
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    PriorityQueue
    dfs
    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    ๋™์ ๊ณ„ํš๋ฒ•
    ์Šคํƒ
    Union-Find
    ๊ตฌํ˜„
    ํ›„์œ„์ˆœํšŒ
    ์ด๋ถ„ํƒ์ƒ‰
    DynamicProgramming
    ๋ฐฑ์ค€
    dp
    programmers
    Stack
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b24445. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ 2
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.