inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 다익스트라 알고리즘(채점지원안됨)

다익스트라 알고리즘

192

rlgus4531

작성한 질문수 15

0

제가 이해한 것이 맞는지 궁금해서 질문드립니다.

pq에서 poll이 됐다는 것은 poll이 된 해당 정점은 dis 배열에서 최소 비용이 확정됐다는 것이죠?

만약 3번 정점의 비용이 4로 최소비용 확정이 되었는데 이것은 1 -> 3으로 갔을 때인 거잖아요. 그럼 1이 아닌 다른 정점에서 3번으로 가는 경우도 pq에서 poll이 될텐데 이미 확정이 났기 때문에 수행속도를 줄이기 위해 if continue 문을 쓰신건가요?

java 코딩-테스트

답변 2

0

김태원

안녕하세요^^

잘 이해하고 계십니다. 그래도 안전을 위해서 if 조건을 만족할 때 continue 하도록 코드를 짜시기 바랍니다.

 

0

rlgus4531

지식공유자님 다익스트라 알고리즘을 공부하다가 헷갈려진 것이 있어 여쭤봅니다.

영상 속의 입력예제에서는 맨 처음에 2번 정점의 최소비용은 12가 되었다가 나중에는 11로 바뀌었잖아요?

이렇게 바뀌게 된 이유가 아직 모든 정점을 방문하지 않았다가 점차 방문하다 더 낮은 비용을 찾게되어 업데이트된 건가요?

그렇다면 결국 pq에 (2, 12)는 poll이 되게 될텐데 무작정 poll이 되었다고 최소비용이라 확정된 게 아니고 if continue문을 통과해야만 최소비용 확정이지 않나요??

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. rlgus4531님!

다익스트라 알고리즘에 대한 질문을 해주셨군요. 다익스트라 알고리즘은 모든 정점의 최단 거리를 계산하는 데 아주 유용한데요, 이해하시기 쉽게 설명드리겠습니다.

  1. pq에서 poll이 됐다는 의미:

    • pq는 우선순위 큐(Priority Queue)를 의미하며, 이는 가장 작은 값(최소 비용)을 가진 정점을 먼저 처리하도록 하는 자료구조입니다. poll() 되었을 때 해당 정점의 최소 비용이 확정되었다는 뜻입니다. 즉, 우선순위 큐에서 꺼낸 정점은 그때까지의 경로 중 가장 비용이 낮은 상태로 해당 정점에 도달한 것이므로, 그 정점에 대한 최단 거리가 확정됩니다.
  2. 이미 확정된 정점과 if continue:

    • 특정 정점(예: 3번 정점)에 대한 최단 거리가 확정되었다면, 이후에 다른 경로를 통해 같은 정점에 도달하더라도, 그 비용은 항상 이상일 수밖에 없습니다. 따라서 if 문 등을 사용하여 이미 확정된 정점은 더 이상 처리하지 않도록 합니다. 이는 불필요한 처리를 줄이고 실행 효율성을 높여줍니다.

이 내용을 이해하셨다면, 다익스트라가 어떻게 최단 경로를 효율적으로 계산하는지를 이해하신 것입니다. 각 정점을 한 번만 확정하고 나중에 중복 체크를 하지 않도록 하는 것이 이 알고리즘의 핵심 중 하나입니다.

더 자세한 이해를 돕기 위해 유사한 질문의 답변을 참고해 보시길 바랍니다. 특히, 다익스트라 알고리즘 질문드립니다. 게시글이 도움될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

33

1

갑자기 채점 사이트가 바뀌었어요

0

34

1

문제 리스트 페이지

0

29

1

채점 사이트 관련 질문드립니다

0

24

1

봉우리 문제 질문입니다

0

84

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

65

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

72

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

67

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

85

2

6-7 강의에서

0

48

1

6-6. 장난꾸러기 질문 있습니다.

0

46

1

강의 수강후 코딩테스트

0

111

1

answer 변수 사용 여부

0

46

1

2중 for문

1

85

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

70

1

이런 풀이는 어떨까요

0

44

1

자바 스트림 방식의 효율성 질문 드립니다.

0

57

1

알고리즘 자료 구조들..

0

63

1

StringBuilder vs BufferdWriter

0

48

1

원더랜드(프림)

0

50

1

이런 코드는 어떤가요?

0

61

1

bfs 풀이

0

57

1

병합정렬

0

57

1