[LeetCode] 743. Network Delay Time

yunanΒ·2021λ…„ 1μ›” 31일
0
post-thumbnail

πŸ”¦ 문제 링크

πŸ”Š 파이썬 μ•Œκ³ λ¦¬μ¦˜ 인터뷰 책을 μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€.

  • 문제

1μ—μ„œ nκΉŒμ§€ λ ˆμ΄λΈ”μ΄ μ§€μ •λœ n 개의 λ…Έλ“œλ‘œ κ΅¬μ„±λœ λ„€νŠΈμ›Œν¬κ°€ μ œκ³΅λ©λ‹ˆλ‹€. λ˜ν•œ μ‹œκ°„, 이동 μ‹œκ°„ λͺ©λ‘μ„ 지정 μ—μ§€λ‘œ μ œκ³΅ν•©λ‹ˆλ‹€. times [i] = (ui, vi, wi), μ—¬κΈ°μ„œ uiλŠ” μ†ŒμŠ€ λ…Έλ“œ, viλŠ” λŒ€μƒ λ…Έλ“œ, wiλŠ” κ±Έλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€. μ†ŒμŠ€μ—μ„œ νƒ€κ²ŸμœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€. 주어진 λ…Έλ“œ kμ—μ„œ μ‹ ν˜Έλ₯Ό λ³΄λƒ…λ‹ˆλ‹€. λͺ¨λ“  n 개의 λ…Έλ“œκ°€ μ‹ ν˜Έλ₯Ό μˆ˜μ‹ ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. n λ…Έλ“œκ°€ λͺ¨λ‘ μ‹ ν˜Έλ₯Ό μˆ˜μ‹  ν•  μˆ˜μ—†λŠ” 경우 -1을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

✍️ 풀이


λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 풀이.
λ‹€μ΅μŠ€νŠΈλΌ 정리

πŸ›  μ½”λ“œ


class Solution:
    def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
        graph = collections.defaultdict(list)
        
        for a, b, cost in times:
            graph[a].append((b, cost))
        
        q = [(0, k)]
        dist = collections.defaultdict(int)
        
        while q:
            time, node = heapq.heappop(q)
            if node not in dist:
                dist[node] = time
                for v, w in graph[node]:
                    alt = time + w
                    heapq.heappush(q, (alt, v))
        print(dist)
        if len(dist) == n:
            return max(dist.values())
        return -1
        
            

πŸ“ 정리


🎈 참고


Book 링크

profile
Go Go

0개의 λŒ“κΈ€