-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
P379, 41번 K 경유지 내 가장 저렴한 항공권 문제 관련 질문 #104
Comments
다음과 같은 코드로 해결했습니다! class Solution:
def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, K: int) -> int:
graph = collections.defaultdict(list)
# 그래프 인접 리스트 구성
for u, v, w in flights:
graph[u].append((v, w))
# 노드가 k번째로 방문했는지 여부를 판단하기 위한 dist
dist = []
for _ in range(K + 2):
dist.append(collections.defaultdict(int))
# 큐 변수: [(가격, 정점, 남은 가능 경유지 수)]
Q = [(0, src, K)]
# 우선 순위 큐 최소값 기준으로 도착점까지 최소 비용 판별
while Q:
price, node, k = heapq.heappop(Q)
dist[k + 1][node] = price
if node == dst:
return price
if k >= 0:
for v, w in graph[node]:
# v가 k번째로 방문한 적이 있는지 확인
if v not in dist[k]:
alt = price + w
heapq.heappush(Q, (alt, v, k - 1))
return -1 |
@GunBros 안녕하세요. 책 출간 이후에 테스트케이스가 변경되어 다른 문제 풀이가 필요한 경우로 보입니다. 그런데 제안해주신 두 번째 풀이도 저는 타임아웃으로 풀리지가 않네요. 이 부분은 풀이가 가능한 코드를 구현하여 추후에 이 곳에 업데이트 하겠습니다. |
안녕하세요. 아직 issue가 open되어 있어서 작성해봅니다! 기존 코드에서 추가한 내용입니다.
import collections
import heapq, sys
from typing import List
class Solution:
def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, K: int) -> int:
graph = collections.defaultdict(list)
weight = [(sys.maxsize, K)] * n
# 그래프 인접 리스트 구성
for u, v, w in flights:
graph[u].append((v, w))
# 큐 변수: [(가격, 정점, 남은 가능 경유지 수)]
Q = [(0, src, K)]
# 우선 순위 큐 최소값 기준으로 도착점까지 최소 비용 판별
while Q:
price, node, k = heapq.heappop(Q)
if node == dst:
return price
if k >= 0:
for v, w in graph[node]:
alt = price + w
if alt < weight[v][0] or k-1 >= weight[v][1]:
weight[v] = (alt, k-1)
heapq.heappush(Q, (alt, v, k - 1))
return -1 |
Poxios
added a commit
to Poxios/Algorithm_Study
that referenced
this issue
Mar 6, 2022
Poxios
added a commit
to Poxios/Study
that referenced
this issue
May 8, 2022
Poxios
added a commit
to Poxios/Study
that referenced
this issue
May 8, 2022
Poxios
added a commit
to Poxios/Study
that referenced
this issue
May 10, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
문제점
책에 있는 풀이를 제출했을 때 TLE가 발생합니다.
제출 코드
제출 결과
사용한 테스트 케이스
leetcode에서 채점을 위해 사용되어지는 테케입니다.
제가 생각하는 문제의 원인
궁금한 점
이 풀이를 어떻게 개선해야할지 궁금합니다.
The text was updated successfully, but these errors were encountered: