From 3446324daf0c535860d176242ee39eaa8ffd9309 Mon Sep 17 00:00:00 2001 From: doreen Date: Tue, 4 Oct 2022 23:33:27 +0900 Subject: [PATCH] =?UTF-8?q?week5=5F=EB=B0=B0=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week6.java" | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 "\354\260\250\353\217\204\355\235\254/week6.java" diff --git "a/\354\260\250\353\217\204\355\235\254/week6.java" "b/\354\260\250\353\217\204\355\235\254/week6.java" new file mode 100644 index 0000000..2dcdd9d --- /dev/null +++ "b/\354\260\250\353\217\204\355\235\254/week6.java" @@ -0,0 +1,69 @@ +import java.util.Comparator; +import java.util.PriorityQueue; + +class Solution { + public int solution(int N, int[][] road, int K) { + int answer = 0; + + int[][] maps = new int[N][N]; + for(int i=0; i pq = new PriorityQueue<>(new Comparator() { + @Override + public int compare(Integer o1, Integer o2) { + return Integer.compare(d[o1], d[o2]); + } // 우선순위 큐는 비교연산자 Comparator로 정의해서 최단거리 비교해야 함 + }); + + d[0] = 0; + pq.add(0); + // 0번째 index 노드 (출발노드) + + while(!pq.isEmpty()) { + int cur = pq.poll(); + // pq에 존재하는 첫번 째 값 반환하고 그 값을 제거 + if (visited[cur]) continue; + // 이미 방문했으면 건너뛰기 + + visited[cur] = true; + for (int i=0; i d[cur] + maps[cur][i]) { + d[i] = d[cur] + maps[cur][i]; + pq.add(i); + } + // 최단 거리가 갱신되면 그 index를 pq에 추가해줘서 다른 최단거리도 변할 수 있도록 함 + } + } + + for(int i=0; i