[๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4

2025. 1. 20. 22:47ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 136204 KB, ์‹œ๊ฐ„: 380 ms

๋ถ„๋ฅ˜

๋‹ค์ต์ŠคํŠธ๋ผ, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ์ตœ๋‹จ ๊ฒฝ๋กœ

 

๋ฌธ์ œ ์„ค๋ช…

๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ฃผ์–ด์ง„ ์‹œ์ž‘์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋Š” 10 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

โœ๐Ÿปํ’€์ด

์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ธ์ ‘ ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(V²)์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(E * logV)์ด ๋˜๋ฏ€๋กœ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” Heap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.

heapq๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด pq๋ฅผ ์ƒ์„ฑํ•ด (๊ฐ€์ค‘์น˜, ์‹œ์ž‘ ์ •์ ) ์Œ์œผ๋กœ ํž™ํ์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  dist๋Š” ๊ฐ ์ •์ ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” 0์ด๋ฏ€๋กœ dist[K] = 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

ํž™ํ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

ํž™ํ์—์„œ ํ˜„์žฌ ๊ฑฐ๋ฆฌ์™€ ํ˜„์žฌ ์ •์  ์œ„์น˜๋ฅผ ๊บผ๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์ •์ ์˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋Š”๋‹ค. ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ํ˜„์žฌ ๊ฑฐ๋ฆฌ์™€ ์ •์ ์„ ํž™ํ์— ๋„ฃ๋Š”๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ dist๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ๊ฐ ์ •์ ์—์„œ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys
import heapq

input = sys.stdin.readline

V, E = map(int, input().split())
K = int(input())
adjlist = [[] for _ in range(V+1)]

for i in range(E):
    u, v, w = map(int, input().split())
    adjlist[u].append((v, w))

pq = []
heapq.heappush(pq, (0, K))
dist = [1e9] * (V+1)
dist[K] = 0

while pq:
    d, cur = heapq.heappop(pq)

    for v, w in adjlist[cur]:
        if dist[v] > dist[cur] + w:
            dist[v] = dist[cur] + w
            heapq.heappush(pq, (dist[v], v))

for i in range(1, V+1):
    if dist[i] == 1e9:
        print("INF")
    else:
        print(dist[i])

๐Ÿ“ํ›„๊ธฐ

๊ทธ๋ž˜ํ”„ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ DFS, BFS๋งŒ ์ƒ๊ฐํ•˜๋Š”๋ฐ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2  (0) 2025.02.04
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2  (0) 2025.01.27
[๋ฐฑ์ค€] 1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน  (0) 2024.12.21
[๋ฐฑ์ค€] 11399. ATM/Python - Silver4  (2) 2024.12.20
[๋ฐฑ์ค€] 1010.๋‹ค๋ฆฌ ๋†“๊ธฐ/Python - Silver5  (1) 2024.12.06
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 24480. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ 2/Python - Silver 2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ/Python - Lv.2
  • [๋ฐฑ์ค€] 1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน
  • [๋ฐฑ์ค€] 11399. ATM/Python - Silver4
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (176)
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (90)
        • Algorithms (82)
        • SQL (7)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    ๋„คํŠธ์›Œํฌ
    programmers
    ์ž๋ฐ”
    ์˜ค๋ธ”์™„
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    bfs
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ๋ฐฑ์ค€
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    Shell Script
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    docker
    Linux
    Shell
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    ๋ฆฌ๋ˆ…์Šค
    K8s
    dfs
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    ๋„์ปค
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    Kubernetes
    Java
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    network
    Baekjoon
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4
์ƒ๋‹จ์œผ๋กœ

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