[๋ฐฑ์ค€] 1504. ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ/Python - Gold4

2025. 8. 12. 14:50ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

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

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

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

๋ถ„๋ฅ˜

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

๋ฌธ์ œ ์„ค๋ช…

๋ฐฉํ–ฅ์„ฑ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์„ธ์ค€์ด๋Š” 1๋ฒˆ ์ •์ ์—์„œ N๋ฒˆ ์ •์ ์œผ๋กœ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ์„ธ์ค€์ด๋Š” ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ด๋™ํ•˜๋Š” ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์€๋ฐ, ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ์ž„์˜๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ •์ ์€ ๋ฐ˜๋“œ์‹œ ํ†ต๊ณผํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์„ธ์ค€์ด๋Š” ํ•œ๋ฒˆ ์ด๋™ํ–ˆ๋˜ ์ •์ ์€ ๋ฌผ๋ก , ํ•œ๋ฒˆ ์ด๋™ํ–ˆ๋˜ ๊ฐ„์„ ๋„ ๋‹ค์‹œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ์ฃผ์˜ํ•˜๋ผ. 1๋ฒˆ ์ •์ ์—์„œ N๋ฒˆ ์ •์ ์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ์ฃผ์–ด์ง„ ๋‘ ์ •์ ์„ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์น˜๋ฉด์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

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

์šฐ์„  ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋ฐฉํ–ฅ์„ฑ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ ๊ฐ„์„ ์„ ์–‘๋ฐฉํ–ฅ ๋ชจ๋‘ ๊ธฐ๋กํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋กํ•œ ๊ฐ„์„  ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ •์ ์„ ์ง€๋‚˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‘ ์ •์ ์„ ์ง€๋‚˜๋Š” ๊ฒฝ๋กœ๋Š” 1 โžก๏ธ v1 โžก๏ธ v2 โžก๏ธ N, 1 โžก๏ธ v2 โžก๏ธ v1 โžก๏ธ N ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 1 โžก๏ธ v1, v1 โžก๏ธ v2, v2 โžก๏ธ N ๊ณผ  1 โžก๏ธ v2, v2 โžก๏ธ v1, v1 โžก๏ธ N ๊ฐ๊ฐ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด์„œ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์ด๋•Œ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ–ˆ์„ ๋•Œ INF๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys
from heapq import heappush, heappop

input = sys.stdin.readline
INF = 1e9

N, E = map(int, input().split())
edges = [[] for _ in range(N)]
for _ in range(E):
    a, b, c = map(int, input().split())
    edges[a-1].append((b-1, c))
    edges[b-1].append((a-1, c))
v1, v2 = map(int, input().split())

def dijkstra(start, end):
    dist = [INF] * N
    move = [(0, start)]
    dist[start] = 0
    
    while move:
        d, v = heappop(move)
        for u, c in edges[v]:
            if dist[u] > d + c:
                dist[u] = d + c
                heappush(move, (d + c, u))
    
    return dist[end]

# 1 -> v1 -> v2 -> N
c1 = dijkstra(0, v1-1) + dijkstra(v1-1, v2-1) + dijkstra(v2-1, N-1)

# 1 -> v2 -> v1 -> N
c2 = dijkstra(0, v2-1) + dijkstra(v2-1, v1-1) + dijkstra(v1-1, N-1)

print(-1) if c1 >= INF and c2 >= INF else print(min(c1, c2))

๐Ÿ“ํ›„๊ธฐ

๋‚˜๋ˆ ์„œ ๊ตฌํ•˜๋Š” ๊ฒƒ ๊นŒ์ง€๋Š” ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ค‘๊ฐ„์— ํ—ค๋งค์„œ ํ‘ธ๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค...

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

[๋ฐฑ์ค€] 13549. ์ˆจ๋ฐ”๊ผญ์งˆ3/Python - Gold5  (0) 2025.08.15
[๋ฐฑ์ค€] 11657. ํƒ€์ž„๋จธ์‹ /Python - Gold4  (1) 2025.08.14
[๋ฐฑ์ค€] 9655. ๋Œ ๊ฒŒ์ž„/Python - Silver5  (2) 2025.08.11
[๋ฐฑ์ค€] 2630. ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ/Python - Silver2  (0) 2025.08.10
[๋ฐฑ์ค€] 11404. ํ”Œ๋กœ์ด๋“œ/Python - Gold4  (0) 2025.08.07
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 13549. ์ˆจ๋ฐ”๊ผญ์งˆ3/Python - Gold5
  • [๋ฐฑ์ค€] 11657. ํƒ€์ž„๋จธ์‹ /Python - Gold4
  • [๋ฐฑ์ค€] 9655. ๋Œ ๊ฒŒ์ž„/Python - Silver5
  • [๋ฐฑ์ค€] 2630. ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ/Python - Silver2
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (187)
      • Linux (26)
      • Infra (9)
      • Cloud (28)
        • AWS (4)
        • GCP (4)
        • 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 (97)
        • Algorithms (89)
        • SQL (7)
      • ETC (6)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

  • ๋งํฌ

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

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

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

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