https://www.acmicpc.net/problem/18352
주의할 점
1. Node 클래스
>> Comparable<Node> 인터페이스 구현
- Comparable 인터페이스는 Java의 기본 인터페이스 중 하나로, 객체를 자연스럽게 정렬하기 위해 사용
- 이 인터페이스를 구현하려면 compareTo 메서드를 정의해야함!
- Node 클래스가 Comparable<Node>를 구현하고 있으므로, Node 객체 간의 비교가 가능!
>> compareTo 메서드
- compareTo 메서드는 두 객체를 비교하여 순서를 결정!
- 이 메서드는 다음과 같은 값을 반환합니다:
음수: 현재 객체가 비교 대상 객체보다 작을 때
0: 현재 객체와 비교 대상 객체가 같을 때
양수: 현재 객체가 비교 대상 객체보다 클 때
>> 우선순위 큐에서의 사용 우선순위 큐(PriorityQueue)는 내부적으로 compareTo 메서드를 사용하여 요소를 정렬합니다.
Node 클래스가 Comparable<Node> 인터페이스를 구현하고 있으므로, 우선순위 큐에서 'Node 객체를 삽입할 때마다' compareTo 메서드를 사용하여 자동으로 정렬합니다. 이로 인해 PriorityQueue<Node>를 사용할 때, cost 값이 가장 작은 Node가 큐의 맨 앞에 위치하게 됩니다.
2. 인접 리스트 사용
3. 방문배열 대신 아래처럼 사용 가능
꺼낸 노드는 현재 최소 비용을 가지는 노드이기 때문에
해당 노드의 비용이 현재 dist 배열에 기록된 내용보다 크다면 이미 방문된 노드이므로 스킵! (방문한 노드는 이미 최솟값을 가짐!)