b20040. ์‚ฌ์ดํด๊ฒŒ์ž„

2025. 5. 12. 21:22ยทAlgorithm & Data Structures/BOJ

 

 

 

๐Ÿ” ์ž๋ฐ”๋กœ ํ‘ธ๋Š” ์‚ฌ์ดํด ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด

 


 

๐Ÿ“Œ ๋ฌธ์ œ ๊ฐœ์š”

 

๋ฐฑ์ค€ 20040 - ์‚ฌ์ดํด ๊ฒŒ์ž„ ๋ฌธ์ œ๋Š”

N๊ฐœ์˜ ์ •์ ์ด ์žˆ๊ณ , M๊ฐœ์˜ ๊ฐ„์„ ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ

์‚ฌ์ดํด์ด ์ฒ˜์Œ ์ƒ๊ธฐ๋Š” ์‹œ์ ์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

  • ๊ฐ„์„ ์€ ์ฐจ๋ก€๋กœ ์—ฐ๊ฒฐ๋˜๋ฉฐ,
  • ๊ฐ„์„ ์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋ฉด ๊ทธ **์ฐจ๋ก€(1-indexed)**๋ฅผ ์ถœ๋ ฅ
  • ๋๊นŒ์ง€ ์‚ฌ์ดํด์ด ์—†์œผ๋ฉด 0์„ ์ถœ๋ ฅ

 


 

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

6 5
0 1
1 2
2 3
0 3
4 5

 

์˜ˆ์ œ ์ถœ๋ ฅ

4

 


 

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

 

์ด ๋ฌธ์ œ๋Š” ์ „ํ˜•์ ์ธ Union-Find(์„œ๋กœ์†Œ ์ง‘ํ•ฉ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•ด

์‚ฌ์ดํด์„ ํƒ์ง€ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

  • ๊ฐ„์„ ์„ ํ•˜๋‚˜์”ฉ ์—ฐ๊ฒฐํ•˜๋ฉฐ, ๋‘ ๋…ธ๋“œ๊ฐ€ ์ด๋ฏธ ๊ฐ™์€ ์ง‘ํ•ฉ์ด๋ฉด ์‚ฌ์ดํด ๋ฐœ์ƒ
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์นจ (union)
  • ์‚ฌ์ดํด์ด ์ƒ๊ธด ์ฒซ ๋ฒˆ์งธ ๊ฐ„์„ ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ

 


 

๐Ÿงพ ์ฝ”๋“œ ํ•ด์„ค

// ๋ถ€๋ชจ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
p = new int[N + 1];
for (int i = 1; i <= N; i++) {
    p[i] = i;
}
// ๊ฐ„์„ ๋งˆ๋‹ค ์‚ฌ์ดํด ์—ฌ๋ถ€ ์ฒดํฌ
for (int i = 0; i < M; i++) {
    int a = Integer.parseInt(st.nextToken());
    int b = Integer.parseInt(st.nextToken());

    if (find(a) == find(b)) {
        sb.append(i + 1);
        check = false;
        break;
    } else {
        union(a, b);
    }
}
private static int find(int a) {
    if (a == p[a]) return p[a];
    return p[a] = find(p[a]); // ๊ฒฝ๋กœ ์••์ถ•
}
private static void union(int a, int b) {
    int pa = find(a);
    int pb = find(b);

    if (pb < pa) {
        int temp = pa;
        pa = pb;
        pb = temp;
    }
    p[pb] = pa;
}

 

  • find(): ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ๊ฒฝ๋กœ ์••์ถ•
  • union(): ์ž‘์€ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€๋ชจ๋กœ ์‚ผ์•„ ๋ณ‘ํ•ฉ (์ •๋ ฌ์€ ์„ ํƒ)
  • ์‚ฌ์ดํด ํŒ๋ณ„: find(a) == find(b)์ผ ๋•Œ ์‚ฌ์ดํด ๋ฐœ์ƒ

 


 

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ

 

  • Union-Find๋กœ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ์ถ”์ 
  • ์‚ฌ์ดํด์€ ๋‘ ์ •์ ์ด ์ด๋ฏธ ๊ฐ™์€ ์ง‘ํ•ฉ์— ์žˆ์„ ๋•Œ ์ƒ๊ธด๋‹ค
  • ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์‚ฌ์ดํด์ด ์ฒ˜์Œ ์ƒ๊ธฐ๋Š” ์‹œ์ ์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค

 


 

๐ŸŽฏ ๊ฒฐ๋ก : Union-Find๋กœ ์‚ฌ์ดํด์„ ์žก์•„๋‚ด๋‹ค

 

์ด ๋ฌธ์ œ๋Š” DFS, BFS ์—†์ด ์ง‘ํ•ฉ๋งŒ ๊ด€๋ฆฌํ•ด๋„ ์‚ฌ์ดํด์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ

๊ทธ๋ž˜ํ”„์˜ ํ•ต์‹ฌ์ ์ธ ์‚ฌ๊ณ ์ธ “์—ฐ๊ฒฐ๊ณผ ์ง‘ํ•ฉ”์„ ์—ฐ์Šตํ•˜๊ธฐ์— ์ข‹์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

์—ฐ๊ฒฐ → ๊ฐ™์€ ์ง‘ํ•ฉ
์‚ฌ์ดํด → ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ์ง‘ํ•ฉ์— ๋˜ ์—ฐ๊ฒฐํ•˜๋ ค ํ•  ๋•Œ

 

 

 

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

b1774. ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ  (0) 2025.05.14
b4386. ๋ณ„์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ  (0) 2025.05.13
b9372. ์ƒ๊ทผ์ด์˜ ์—ฌํ–‰  (0) 2025.05.11
b4195. ์นœ๊ตฌ๋„คํŠธ์›Œํฌ  (0) 2025.05.08
b1976. ์—ฌํ–‰๊ฐ€์ž  (0) 2025.05.06
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b1774. ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ
  • b4386. ๋ณ„์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ
  • b9372. ์ƒ๊ทผ์ด์˜ ์—ฌํ–‰
  • b4195. ์นœ๊ตฌ๋„คํŠธ์›Œํฌ
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (316)
      • Algorithm & Data Structures (238)
        • BOJ (96)
        • 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)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b20040. ์‚ฌ์ดํด๊ฒŒ์ž„
์ƒ๋‹จ์œผ๋กœ

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