해결된 질문
작성
·
57
1
def dijkstra(graph, start, final):
costs = {} # 방문 여부
pq = [] # 우선순위 큐
heapq.heappush(pq, (0, start)) # 시작 노드 추가
while pq:
cur_cost, cur_v = heapq.heappop(pq)
if cur_v == final:
return cur_cost
if cur_v not in costs: # 방문여부 확인
costs[cur_v] = cur_cost
# 인접 노드 탐색하면서 비용 업데이트
for next_v, cost in graph[cur_v]: # 현재노드와 연결된 인접노드와 그 비용
next_cost = cur_cost + cost
heapq.heappush(pq, (next_cost, next_v))
return costs[final]
정말 사소한건데요, while pq:
내용 중 for cost, next_v in graph[cur_v]:
를 for next_v, cost in graph[cur_v]:
로 고쳐도 되는지 묻고 싶습니다.
우선순위 큐는 비용을 기준으로 하니까 (E,V)가 맞는거 같은데요. 그래프가 G=(V,E) 수식을 따르다 보니까 그래프로 초기화할 때도 ("A", 3)과 같이 노드와 비용 순서대로 하잖아요?
그래서 이러한 논리를 for문에도 적용하면 훨씬 이해하기 쉽지 않을까 개인적으로 생각이 듭니다. (아! 이건 제 개인적인 생각이니 코드를 고쳐달라고 요구를 하는 건 절대 아닙니다 😅)
답변 1
0
안녕하세요! Ambition님!
이건 상황에 따라 다르게 적용될 수는 있지만요..!! 개인적으로 코딩을 할 때에는 상관 없다고 생각합니다.
혼자 작업할 때 굳이 이해하기 어렵고 불편한 방법을 쓸 필요는 없잖아요?!
행, 열을 나타낼 때 보통 row, col 이렇게 쓰는 것이 일반적이지만 저는 y, x로 사용합니다!
다만 단체로 작업을 할 때에는 관례를 따르는게 좋습니다 ㅎㅎ
따라서 상황에 맞게 편하신대로 작성하시면 될 것 같습니다.
감사합니다.
아하 코테문제를 풀 때는 본인만 이해하면 되니까 상관없다는 말씀이시군요 감사합니다 :)