inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

다익스트라 (Dijkstra)

다익스트라 코드 중에 궁금한 것이 있습니다.

해결된 질문

153

Ambition

작성한 질문수 61

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문에도 적용하면 훨씬 이해하기 쉽지 않을까 개인적으로 생각이 듭니다. (아! 이건 제 개인적인 생각이니 코드를 고쳐달라고 요구를 하는 건 절대 아닙니다 😅)

python 코딩-테스트 알고리즘

답변 1

0

구운햄

안녕하세요! Ambition님!

이건 상황에 따라 다르게 적용될 수는 있지만요..!! 개인적으로 코딩을 할 때에는 상관 없다고 생각합니다.

혼자 작업할 때 굳이 이해하기 어렵고 불편한 방법을 쓸 필요는 없잖아요?!

행, 열을 나타낼 때 보통 row, col 이렇게 쓰는 것이 일반적이지만 저는 y, x로 사용합니다!

 

다만 단체로 작업을 할 때에는 관례를 따르는게 좋습니다 ㅎㅎ

따라서 상황에 맞게 편하신대로 작성하시면 될 것 같습니다.

 

감사합니다.

0

Ambition

아하 코테문제를 풀 때는 본인만 이해하면 되니까 상관없다는 말씀이시군요 감사합니다 :)

노션 공유 링크

0

87

2

수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?

0

78

2

최신 강의와 비교

0

85

2

Min Cost Climbing stairs 질문

0

77

2

노션 공유 부탁드립니다!

1

88

2

for 문에 sort 함수 를 사용하면

1

90

2

노션 공유 부탁드립니다.

0

105

2

디스코드가 올바르지 않다고 뜹니다..!

0

107

1

그래프

0

98

2

노션 공유

1

123

2

시간복잡도 질문

2

125

3

11강 질문

1

78

2

노션 공유 부탁드립니다

0

84

2

linkedList - BrowserHistory 코드 질문

0

76

1

list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?

1

168

1

라이브러리 사용

1

137

2

문제 교재는 따로 없는 거 맞나요?

1

202

2

LCA 관련해서 질문이 있습니다.

1

118

2

[Unique Paths] 완전탐색 / DP (후반부)

0

108

1

dp 계단오르기최소비용질문입니다.

0

109

1

Dynamic Array 의 size 정보가 저장되는 곳

2

161

2

노션공유가 안된듯 합니다

1

165

2

[코테 적용] 👉 [3번 문제] 완전탐색 (DFS, BFS) (전반부)

1

122

1

강의자료 만들 때 사용하신 프로그램이 뭘까요?

1

204

1