b1774. ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ

2025. 5. 14. 15:11ยทAlgorithm & Data Structures/BOJ

 

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

 

 

 

๐ŸŒŒ ์ž๋ฐ”๋กœ ํ‘ธ๋Š” ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ ๋ฌธ์ œ ํ’€์ด

 


 

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

 

๋ฐฑ์ค€ 1774๋ฒˆ ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ ๋ฌธ์ œ๋Š”

N๊ฐœ์˜ ์‹ ๋“ค๊ณผ ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ M๊ฐœ์˜ ํ†ต๋กœ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,

๋ชจ๋“  ์šฐ์ฃผ์‹ ์ด ์—ฐ๊ฒฐ๋˜๋„๋ก ์ถ”๊ฐ€๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•  ์ตœ์†Œ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

  • ๊ฐ ์šฐ์ฃผ์‹ ์€ 2์ฐจ์› ์ขŒํ‘œ ์œ„์— ์กด์žฌ
  • ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ํ†ต๋กœ๋Š” ์ถ”๊ฐ€ ๋น„์šฉ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ชฉํ‘œ๋Š” ์ „์ฒด ์šฐ์ฃผ์‹ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ตœ์†Œ ๋น„์šฉ

 


 

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

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

 

์˜ˆ์ œ ์ถœ๋ ฅ

2.00

 


 

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

 

์ด ๋ฌธ์ œ๋Š” ๊ธฐ์กด ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ณ ๋ คํ•œ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST) ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

 

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

 

  • ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๊ฑฐ๋ฆฌ ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ๊ฐ„์„  ์„ ํƒ
  • M๊ฐœ์˜ ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ํ†ต๋กœ๋Š” ๋จผ์ € union() ์ฒ˜๋ฆฌ
  • ์ดํ›„ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋‘ ์  ๊ฐ„ ๊ฑฐ๋ฆฌ(๊ฐ„์„ )๋ฅผ ๊ตฌํ•ด PriorityQueue์— ์ €์žฅ
  • ์‚ฌ์ดํด์„ ํ”ผํ•˜๋ฉฐ ์ตœ์†Œ ๊ฐ„์„ ์„ ์„ ํƒํ•˜์—ฌ MST ์™„์„ฑ

 


 

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

 

 

๐Ÿช ์ขŒํ‘œ ์ž…๋ ฅ ๋ฐ ์œ ๋‹ˆ์˜จ ์ดˆ๊ธฐํ™”

N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
gods = new int[N+1][2];
p = new int[N+1];
for(int i = 1; i <= N; i++) {
    st = new StringTokenizer(br.readLine());
    gods[i][0] = Integer.parseInt(st.nextToken());
    gods[i][1] = Integer.parseInt(st.nextToken());
    p[i] = i;
}

 

๐Ÿ›ฐ ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ํ†ต๋กœ union ์ฒ˜๋ฆฌ

for(int i = 1; i <= M; i++) {
    st = new StringTokenizer(br.readLine());
    int a = Integer.parseInt(st.nextToken());
    int b = Integer.parseInt(st.nextToken());
    if(union(a,b)) count++;
}

 

๐ŸŒ ๊ฐ€๋Šฅํ•œ ๊ฐ„์„  ์ƒ์„ฑ (๋ชจ๋“  ๋‘ ์  ์Œ)

for(int i = 1; i <= N; i++) {
    for (int j = i + 1; j <= N; j++) {
        pq.add(new Line(i,j));
    }
}

 

๐ŸŒ  ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ MST ์™„์„ฑ

while (!pq.isEmpty()) {
    if (count == N - 1) break;

    Line l = pq.poll();
    if (union(l.a, l.b)) {
        answer += l.value;
        count++;
    }
}
System.out.println(String.format("%.2f", answer));

 

๐Ÿ“ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ ํ•จ์ˆ˜

private static double getDistance(int a, int b) {
    return Math.sqrt(Math.pow(gods[a][0]-gods[b][0],2) + Math.pow(gods[a][1]-gods[b][1],2));
}

 


 

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

 

  • ํฌ๋ฃจ์Šค์นผ์„ ์‚ฌ์šฉํ•œ MST ๋ฌธ์ œ
  • ๊ธฐ์กด ๊ฐ„์„ (M๊ฐœ)์€ ๋ฏธ๋ฆฌ union() ์ฒ˜๋ฆฌํ•ด์„œ ์—ฐ๊ฒฐ ์ƒํƒœ ๋ฐ˜์˜
  • ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์€ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ (sqrt(x² + y²))
  • ์ตœ์†Œ ๊ฐ„์„  ์ˆ˜๋Š” N - 1์ด๋ฉฐ, count๋กœ ์ถ”์ 

 


 

๐Ÿš€ ๊ฒฐ๋ก : ์—ฐ๊ฒฐ์„ ํ™•์žฅํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๊ธธ

 

์ด ๋ฌธ์ œ๋Š” MST์—์„œ ๊ธฐ์กด ์—ฐ๊ฒฐ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ์˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๋ฌป๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์‚ฌ์ดํด์„ ํ”ผํ•˜๋ฉด์„œ, ๊ฐ€๋Šฅํ•œ ํ•œ ์งง์€ ๊ฑฐ๋ฆฌ์˜ ํ†ต๋กœ๋งŒ์„ ์„ ํƒํ•ด์•ผ ํ•˜์ฃ .

 

 

 

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

b10942. ํŽ ๋ฆฐ๋“œ๋กฌ?  (0) 2025.05.20
b1655. ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”  (0) 2025.05.19
b4386. ๋ณ„์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ  (0) 2025.05.13
b20040. ์‚ฌ์ดํด๊ฒŒ์ž„  (0) 2025.05.12
b9372. ์ƒ๊ทผ์ด์˜ ์—ฌํ–‰  (0) 2025.05.11
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b10942. ํŽ ๋ฆฐ๋“œ๋กฌ?
  • b1655. ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”
  • b4386. ๋ณ„์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ
  • b20040. ์‚ฌ์ดํด๊ฒŒ์ž„
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)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b1774. ์šฐ์ฃผ์‹ ๊ณผ์˜ ๊ต๊ฐ
์ƒ๋‹จ์œผ๋กœ

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