[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)

2023. 10. 4. 12:05ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

๊ฐ•์ฒ ๋ถ€๋Œ€์˜ ๊ฐ ๋ถ€๋Œ€์›์ด ์—ฌ๋Ÿฌ ์ง€์—ญ์— ๋ฟ”๋ฟ”์ด ํฉ์–ด์ ธ ํŠน์ˆ˜ ์ž„๋ฌด๋ฅผ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ง€๋„์—์„œ ๊ฐ•์ฒ ๋ถ€๋Œ€๊ฐ€ ์œ„์น˜ํ•œ ์ง€์—ญ์„ ํฌํ•จํ•œ ๊ฐ ์ง€์—ญ์€ ์œ ์ผํ•œ ๋ฒˆํ˜ธ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, ๋‘ ์ง€์—ญ ๊ฐ„์˜ ๊ธธ์„ ํ†ต๊ณผํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ๋ชจ๋‘ 1๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ž„๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฐ ๋ถ€๋Œ€์›์€ ์ง€๋„ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ๋‹จ์‹œ๊ฐ„์— ๋ถ€๋Œ€๋กœ ๋ณต๊ท€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ ๊ตฐ์˜ ๋ฐฉํ•ด๋กœ ์ธํ•ด, ์ž„๋ฌด์˜ ์‹œ์ž‘ ๋•Œ์™€ ๋‹ค๋ฅด๊ฒŒ ๋˜๋Œ์•„์˜ค๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†์–ด์ ธ ๋ณต๊ท€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถ€๋Œ€์›๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์ฒ ๋ถ€๋Œ€๊ฐ€ ์œ„์น˜ํ•œ ์ง€์—ญ์„ ํฌํ•จํ•œ ์ด์ง€์—ญ์˜ ์ˆ˜ n, ๋‘ ์ง€์—ญ์„ ์™•๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ ์ •๋ณด๋ฅผ ๋‹ด์€ 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด roads, ๊ฐ ๋ถ€๋Œ€์›์ด ์œ„์น˜ํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ์ง€์—ญ๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด sources, ๊ฐ•์ฒ ๋ถ€๋Œ€์˜ ์ง€์—ญ destination์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฃผ์–ด์ง„ sources์˜ ์›์†Œ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ•์ฒ ๋ถ€๋Œ€๋กœ ๋ณต๊ท€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋‹จ์‹œ๊ฐ„์„ ๋‹ด์€ ๋ฐฐ์—ด์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋ณต๊ท€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋Œ€์›์˜ ์ตœ๋‹จ์‹œ๊ฐ„์€ -1์ž…๋‹ˆ๋‹ค.

๋‚ด ํ’€์ด

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๋ชฉ์ ์ง€(destination)๋ถ€ํ„ฐ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•œ ๋’ค ์กฐ๊ฑด์— ๋งž๊ฒŒ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

#include <string>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(int n, vector<vector<int>> roads, vector<int> sources, int destination) {
    vector<int> answer;
    vector<vector<int>> map(n);
    int max_int = 999'999;
    vector<int> distance(n, max_int);
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int,int>>> pq;
    
    for(const auto& r : roads)
    {
        map[r[0]-1].push_back(r[1]-1);
        map[r[1]-1].push_back(r[0]-1);
    }
    
    // ๋ชฉ์ ์ง€๋ฅผ ํ์— ์ถ”๊ฐ€
    pq.push({0, destination-1});
    
    while(!pq.empty())
    {
        auto top = pq.top();
        pq.pop();
        
        int r = top.second;
        int d = top.first;
        
        distance[r] = min(distance[r], d);
        
        for(int i = 0; i < map[r].size(); ++i)
        {   
            int nxt = map[r][i];
            int dist = d + 1;
            
            if(dist < distance[nxt])
            {
                pq.push({dist, nxt});
            }
        }
    }
    
    for(int s : sources)
    {
        if(max_int != distance[s-1])
            answer.push_back(distance[s-1]);
        else
            answer.push_back(-1);
    }
    
    return answer;
}

์ฑ„์  ๊ฒฐ๊ณผ

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Hacker Rank] Organizing Containers of Balls (C++)  (1) 2023.10.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ(C++)  (1) 2023.10.05
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)  (0) 2023.09.28
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)  (0) 2023.09.26
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)  (0) 2023.09.22
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Hacker Rank] Organizing Containers of Balls (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜• ์ฐพ๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค (C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      OnlineSubsystem
      propertyaccess
      UnrealEngine5
      ํ—ฌํ…Œ์ด์ปค
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      ๊ทธ๋ฆฌ๋””(greedy)
      UnrealEngine
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      cpp
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      unrealengine module
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      programmers
      unrealengine build system
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ถ€๋Œ€๋ณต๊ท€ (C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”