[C++] 배달 - 다익스트라로 구현 (각 거리의 최소 비용 구하기 - 우선순위큐)

2026. 10. 3. 22:08·coding test - C++/기본기문제
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12978

 

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

// 1번 마을 부터 K시간 이하로 음식을 배달 할 수 있는 경우의 수
int solution(int N, vector<vector<int> > road, int K) {
    int answer = 0;
    int INF = 1e9;
    priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
    vector<vector<int>> maps(N+1,vector<int>(N+1,INF));
    vector<int> dist(N+1,INF);
    for(auto r:road){
        int start = r[0];
        int end = r[1];
        int time = r[2];
        
        maps[start][end] = min(maps[start][end], time);
        maps[end][start] = min(maps[end][start],time);
    }
    
    int cnt = 0;
    
    dist[1] = 0; // dist 는 1에서 각각 노드에 걸리는 최소 거리를 담는 것
    pq.push({0,1}); // cost, node 
    
    while (!pq.empty()){
        int cost = pq.top().first;
        int node = pq.top().second;
        
        pq.pop();
        
        if (cost > dist[node]){
            continue;
        }
        for (int i = 1; i < N+1; i++){
            if (maps[node][i] == INF){
                continue;
            }
            int new_cost = cost + maps[node][i]; // 현재 노드까지 왔을때 cost 갱신
            if (new_cost < dist[i]){ // 기록된 cost 와 비교
                dist[i] = new_cost;
            }
            pq.push({new_cost,i});
        }
        
    }
    
    for (int d: dist){
        if (d <= K){
            answer+= 1;
        }
    }
    return answer;
}
728x90
반응형

'coding test - C++ > 기본기문제' 카테고리의 다른 글

[C++] 스티커문제 - dp  (0) 2026.10.03
[C++] 땅따먹기 - DP  (0) 2026.10.03
[C++] 가장 큰 정사각형 찾기 - DP  (0) 2026.10.03
[C++] 다이나믹 프로그래밍 - AI 개념 정리  (0) 2026.10.01
[C++] 이분탐색  (0) 2026.10.01
'coding test - C++/기본기문제' 카테고리의 다른 글
  • [C++] 스티커문제 - dp
  • [C++] 땅따먹기 - DP
  • [C++] 가장 큰 정사각형 찾기 - DP
  • [C++] 다이나믹 프로그래밍 - AI 개념 정리
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (657) N
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • BIO (0)
        • Basic (2)
      • coding test - python (305)
        • Programmers (170)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (3)
        • Programmers (14)
        • 백준 (8)
        • 기본기문제 (14)
      • 공부정리 (6) N
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (3)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (1)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (8)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    소수
    programmers
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
[C++] 배달 - 다익스트라로 구현 (각 거리의 최소 비용 구하기 - 우선순위큐)
상단으로

티스토리툴바