Menu
CoddyTech

Cheapest Flights Within K Stops

n개의 도시가 있으며, 각 도시는 0부터 n-1까지 번호가 매겨져 있고, 편도 항공편 목록이 주어집니다. flights[i] = [from, to, price]는 도시 from에서 도시 to로 가는 항공편이며 비용은 price입니다.

이동 중 최대 k번 경유하는 src에서 dst까지의 여행에 드는 최소 총 비용을 반환하세요. 즉, 항공편을 최대 k+1개 이용할 수 있습니다. 그러한 여행이 없다면 -1을 반환하세요.

함수

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
도시의 수
flightsinteger-2d-array
각각 [from, to, price] 형식인 편도 항공편
srcinteger
여행이 시작되는 도시
dstinteger
여행이 끝나는 도시
kinteger
src와 dst 사이에 허용되는 최대 경유지 수
반환값integer
경유지가 최대 k개인 여행의 최저 가격 또는 -1

제약 조건

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price]에서 0 ≤ from, to < n이고 from ≠ to입니다
  • 1 ≤ price ≤ 104
  • 두 항공편이 from과 to를 모두 공유하는 경우는 없습니다.
  • 0 ≤ src, dst < n이고 src ≠ dst
  • 0 ≤ k < n

예제

입력
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
출력
230
설명
경유지 한 곳으로 두 번의 비행이 가능합니다: 0 → 1 → 3의 비용은 50 + 180 = 230이고, 0 → 2 → 3의 비용은 200 + 50 = 250입니다. 더 저렴한 0 → 1 → 2 → 3은 경유지가 두 곳입니다.
challenge icon

후속 질문

가장 저렴한 여행의 도시들과 그 가격을 어떻게 반환할 수 있을까요?

코드 초기화
def findCheapestPrice(n, flights, src, dst, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

n = 4
flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]
src = 0
dst = 3
k = 1

예상 출력

230