b4195. ์นœ๊ตฌ๋„คํŠธ์›Œํฌ

2025. 5. 8. 21:46ยทAlgorithm & Data Structures/BOJ

 

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

 

 

 

๐Ÿ‘ฅ ์ž๋ฐ”๋กœ ํ‘ธ๋Š” ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ ํ’€์ด

 


 

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

 

๋ฐฑ์ค€ 4195๋ฒˆ - ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋Š”

์—ฌ๋Ÿฌ ๋ช…์ด ์นœ๊ตฌ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋  ๋•Œ,

๊ฐ ๊ด€๊ณ„๋งˆ๋‹ค ํ˜„์žฌ ์นœ๊ตฌ ๋„คํŠธ์›Œํฌ์˜ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

  • ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ง (A B → A์™€ B๊ฐ€ ์นœ๊ตฌ)
  • ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค, A์™€ B๊ฐ€ ์†ํ•œ ์ „์ฒด ๋„คํŠธ์›Œํฌ(์—ฐ๊ฒฐ๋œ ์ง‘ํ•ฉ)์˜ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅ
  • ์ด๋ฆ„์€ ๋ฌธ์ž์—ด๋กœ ์ฃผ์–ด์ง

 


 

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

2
3
Fred Barney
Barney Betty
Betty Wilma
3
Fred Barney
Betty Wilma
Barney Betty

 

์˜ˆ์ œ ์ถœ๋ ฅ

2  
3  
4  
2  
2  
4

 

 


 

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

 

  • ํ•ต์‹ฌ์€ Union-Find (Disjoint Set) ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ด๋ฆ„์ด ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์—, HashMap<String, Integer>๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜ ์ธ๋ฑ์Šค๋กœ ๋งคํ•‘
  • union(a, b) ์—ฐ์‚ฐ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋‘ ์ง‘ํ•ฉ์„ ๋ณ‘ํ•ฉํ•˜๊ณ , ๋ณ‘ํ•ฉ๋œ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜

 


 

โœ… ๊ตฌํ˜„ ์•„์ด๋””์–ด

 

  • p[]: ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋ฅผ ์ €์žฅ (Find ์‹œ ์‚ฌ์šฉ)
  • size[]: ๊ฐ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ ์ €์žฅ (๋ฃจํŠธ ๊ธฐ์ค€์œผ๋กœ๋งŒ ์˜๋ฏธ ์žˆ์Œ)
  • HashMap<String, Integer>: ์ด๋ฆ„์„ ์ •์ˆ˜ ์ธ๋ฑ์Šค๋กœ ๋งคํ•‘
  • find(x): ๊ฒฝ๋กœ ์••์ถ• ์ ์šฉ
  • union(a, b): ๋” ์ž‘์€ ๋ฒˆํ˜ธ์˜ ๋ฃจํŠธ๋กœ ๋ณ‘ํ•ฉํ•˜๊ณ  ํฌ๊ธฐ ์—…๋ฐ์ดํŠธ

 


 

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

// ์ด๋ฆ„์„ ์ •์ˆ˜๋กœ ๋งคํ•‘ํ•˜๊ณ  ์ดˆ๊ธฐํ™”
if (!name.containsKey(a)) name.put(a, count++);
if (!name.containsKey(b)) name.put(b, count++);
// find ํ•จ์ˆ˜: ๊ฒฝ๋กœ ์••์ถ• ์ ์šฉ
private static int find(int x) {
    if (p[x] != x)
        p[x] = find(p[x]);
    return p[x];
}
// union ํ•จ์ˆ˜: ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๊ณ  size ์—…๋ฐ์ดํŠธ
private static int union(int a, int b) {
    int pa = find(a);
    int pb = find(b);
    if (pa == pb) return size[pa];

    if (pa < pb) {
        p[pb] = pa;
        size[pa] += size[pb];
        return size[pa];
    } else {
        p[pa] = pb;
        size[pb] += size[pa];
        return size[pb];
    }
}

 

 


 

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

 

  • ๋ฌธ์ž์—ด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ˆ˜์น˜ํ™”ํ•˜๊ธฐ ์œ„ํ•ด HashMap์„ ์‚ฌ์šฉ
  • Union-Find + size ๋ฐฐ์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด, ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ 
  • ๋…ธ๋“œ ์ˆ˜๊ฐ€ ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ถฉ๋ถ„ํ•œ ๋ฐฐ์—ด ํฌ๊ธฐ ํ™•๋ณด (200_001)
  • find()์— ๊ฒฝ๋กœ ์••์ถ•์„ ์ ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ

 


 

โœจ ๊ฒฐ๋ก : ๋ฌธ์ž์—ด ๋ฌธ์ œ์ง€๋งŒ ๊ฒฐ๊ตญ์€ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ

 

์ด ๋ฌธ์ œ๋Š” ์ž…๋ ฅ์€ ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์ด์ง€๋งŒ,

์‹ค์ œ๋กœ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„์™€ ์ง‘ํ•ฉ ํฌ๊ธฐ ์ถ”์ ์ด๋ผ๋Š” ์ „ํ˜•์ ์ธ Union-Find ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

“์‚ฌ๋žŒ์€ ๋ฌธ์ž์—ด์ด์ง€๋งŒ, ์—ฐ๊ฒฐ์€ ์ˆ˜๋กœ ๋ชจ๋ธ๋งํ•œ๋‹ค.”
→ ์ด์ฒ˜๋Ÿผ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ๊ตฌ์กฐํ™”ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

 

 

 

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

b20040. ์‚ฌ์ดํด๊ฒŒ์ž„  (0) 2025.05.12
b9372. ์ƒ๊ทผ์ด์˜ ์—ฌํ–‰  (0) 2025.05.11
b1976. ์—ฌํ–‰๊ฐ€์ž  (0) 2025.05.06
b1717. ์ง‘ํ•ฉ์˜ ํ‘œํ˜„  (0) 2025.05.06
b4803. ํŠธ๋ฆฌ  (0) 2025.04.28
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b20040. ์‚ฌ์ดํด๊ฒŒ์ž„
  • b9372. ์ƒ๊ทผ์ด์˜ ์—ฌํ–‰
  • b1976. ์—ฌํ–‰๊ฐ€์ž
  • b1717. ์ง‘ํ•ฉ์˜ ํ‘œํ˜„
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)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b4195. ์นœ๊ตฌ๋„คํŠธ์›Œํฌ
์ƒ๋‹จ์œผ๋กœ

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