Menu
CoddyTech

Network Delay Time

네트워크에는 n개의 노드가 있으며, 노드에는 1부터 n까지 번호가 매겨져 있습니다. 링크는 times라는 목록으로 주어지며, times[i] = [u, v, w]는 노드 u에서 보낸 신호가 w시간 단위 후에 노드 v에 도달한다는 뜻입니다. 링크는 한 방향으로만 작동합니다.

시간 0에 노드 k에서 신호가 출발해 이동할 수 있는 모든 링크를 따라갑니다. 마지막 노드가 신호를 받는 시간을 반환하고, 어떤 노드가 신호를 받지 못하면 -1을 반환하세요.

함수

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
방향이 있는 각 링크는 [u, v, w]로 표시됩니다.
ninteger
노드의 수
kinteger
신호를 보내는 노드
반환값integer
마지막 노드가 신호를 받는 시간 또는 -1

제약 조건

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n 그리고 u ≠ v
  • 0 ≤ w ≤ 100
  • 같은 u와 v를 모두 공유하는 링크는 두 개 이상 없습니다.
  • 1 ≤ k ≤ n

예제

입력
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
출력
4
설명
노드 3은 시간 1에 신호를 듣습니다. 노드 2는 직접 연결을 통해 시간 4에 신호를 들을 수 있지만, 노드 3을 거치는 경로로는 1 + 2 = 3에 도착하고, 노드 4는 3 + 1 = 4에 신호를 듣습니다. 노드 4가 마지막으로, 시간 4에 신호를 듣습니다.

lock icon제출 시 숨은 테스트 +16개

challenge icon

후속 질문

신호가 m개의 링크를 지난 뒤 약해진다고 가정해 보세요. 그 제한 내에서 마지막 노드가 신호를 듣는 시간을 어떻게 구할까요?

코드 초기화
def networkDelayTime(times, n, k):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]
n = 4
k = 1

기대값

4