ABOUT ME

์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹น~ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋Š” https://velog.io/@ows3090 ์— ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Today
Yesterday
Total
  • [Programmers] Lv3. ๋ฐฐ๋‹ฌ
    SW Test/Programmers 2020. 9. 10. 02:43
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ c++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

    ์˜ˆ์‹œ


    ํ’€์ด

    #include <iostream>
    #include <vector>
    #include <queue>
    #include <utility>
    #include <iostream>
    using namespace std;
    int INF = 50000001;
    int dist[51];
    int check[51];
    // ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ด๊ฒฐ
    // ์šฐ์„ ์ˆœ์œ„ ํ ์ •๋ ฌ, ์ตœ์†Œ๋น„์šฉ ์ˆœ์œผ๋กœ ์ •๋ ฌ
    struct cmp{
    bool operator()(pair<int,int> a,pair<int,int> b){
    return a.second>b.second;
    }
    };
    void dijstra(int vec[51][51], int start,int N){
    priority_queue<pair<int,int>,vector<pair<int,int>>,cmp> pq;
    // ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๊นŒ์ง€ ๊ฑฐ๋ฆฌ ์ดˆ๊ธฐํ™”
    for(int i=1;i<=N;i++){
    dist[i]=vec[start][i];
    pq.push(make_pair(i,dist[i]));
    }
    // ์šฐ์„ ์ˆœ์œ„ ํ์— ๋ชจ๋‘ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ, ์ฆ‰ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ–ˆ์„ ๊ฒฝ์šฐ
    while(!pq.empty()){
    int node = pq.top().first;
    pq.pop();
    check[node] = true; // ํƒ์ƒ‰ํ–ˆ๋Š”์ง€ ํ™•์ธ, ์ตœ์†Œ ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰๋˜์—ˆ๋‹ค๋Š” ๋œป์ด ์ตœ์†Œ ๋น„์šฉ ๊ณ„์‚ฐ ์™„๋ฃŒ
    for(int i=1;i<=N;i++){
    if(!check[i]){
    if(dist[node] + vec[node][i] < dist[i]){ // ๊ธฐ์กด ๊ฑฐ๋ฆฌ๋ณด๋‹ค node ์ •์ ์„ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ์ž‘์„ ๊ฒฝ์šฐ
    dist[i] = dist[node] + vec[node][i];
    pq.push(make_pair(i,dist[i]));
    }
    }
    }
    }
    }
    int solution(int N, vector<vector<int> > road, int K) {
    int answer = 0;
    int vec[51][51]={0};
    for(int i=1;i<=N;i++){
    for(int j=1;j<=N;j++){
    vec[i][j]= i==j?0:INF;
    }
    }
    for(int i=0;i<road.size();i++){
    int s = road[i][0];
    int e = road[i][1];
    int cost = road[i][2];
    if(cost<vec[s][e]){
    vec[s][e] = cost;
    vec[e][s] = cost;
    }
    }
    dijstra(vec,1,N);
    for(int i=1;i<=N;i++){
    cout<<dist[i]<<' ';
    if(dist[i]<=K){
    answer++;
    }
    }
    return answer;
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.