-
[프로그래머스] 배달ALGORITHM/PROGRAMMERS 2021. 7. 29. 14:20
https://programmers.co.kr/learn/courses/30/lessons/12978
2021-07-29
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import java.util.*;class Solution {static int[] dist;static List<List<Node>> list;static class Node implements Comparable<Node> {int val;int cost;public Node(int val, int cost) {this.val = val;this.cost = cost;}@Overridepublic int compareTo(Node o) {return this.cost - o.cost;}}public int solution(int N, int[][] road, int K) {int answer = 0;list = new ArrayList<>();dist = new int[N+1];for(int i = 0; i <= N; i++) {list.add(new ArrayList<>()); // initdist[i] = 987654321;}for (int[] ints : road) {list.get(ints[0]).add(new Node(ints[1], ints[2]));list.get(ints[1]).add(new Node(ints[0], ints[2]));}boolean[] vtd = new boolean[N+1];PriorityQueue<Node> q = new PriorityQueue<>();vtd[0] = true;dist[1] = 0;q.add(new Node(1, 0));while(!q.isEmpty()) {int cur = q.poll().val;if(vtd[cur]) continue;vtd[cur] = true;for(Node n: list.get(cur)) {if(dist[n.val] > dist[cur] + n.cost) {dist[n.val] = dist[cur] + n.cost;q.add(new Node(n.val, dist[n.val]));}}}for(int i = 1; i < dist.length; i++) if(dist[i] <= K) answer++;return answer;}}cs #문제풀이
우선순위 큐를 이용한 다익스트라 알고리즘을 활용하여 풀었다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 더 맵게 (0) 2021.07.30 [프로그래머스] 2개 이하로 다른 비트 (월간 코드 챌린지 시즌2) (0) 2021.07.29 [프로그래머스] 주식가격 (0) 2021.07.28 [프로그래머스] 프린터 (0) 2021.07.28 [프로그래머스] 소수 찾기 (완전탐색) (0) 2021.07.28