ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ(C++)

2023. 4. 21. 03:23ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

n๊ฐœ์˜ ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•˜๋Š” ๋น„์šฉ(costs)์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ์†Œ์˜ ๋น„์šฉ์œผ๋กœ ๋ชจ๋“  ์„ฌ์ด ์„œ๋กœ ํ†ตํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ return ํ•˜๋„๋ก solution์„ ์™„์„ฑํ•˜์„ธ์š”.

๋‹ค๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฑด๋„ˆ๋”๋ผ๋„, ๋„๋‹ฌํ•  ์ˆ˜๋งŒ ์žˆ์œผ๋ฉด ํ†ตํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A ์„ฌ๊ณผ B ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๊ณ , B ์„ฌ๊ณผ C ์„ฌ ์‚ฌ์ด์— ๋‹ค๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด A ์„ฌ๊ณผ C ์„ฌ์€ ์„œ๋กœ ํ†ตํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • ์„ฌ์˜ ๊ฐœ์ˆ˜ n์€ 1 ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • costs์˜ ๊ธธ์ด๋Š” ((n-1) * n) / 2์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ž„์˜์˜ i์— ๋Œ€ํ•ด, costs[i][0] ์™€ costs[i] [1]์—๋Š” ๋‹ค๋ฆฌ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๋‘ ์„ฌ์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด์žˆ๊ณ , costs[i] [2]์—๋Š” ์ด ๋‘ ์„ฌ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•  ๋•Œ ๋“œ๋Š” ๋น„์šฉ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ™์€ ์—ฐ๊ฒฐ์€ ๋‘ ๋ฒˆ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋”๋ผ๋„ ๊ฐ™์€ ์—ฐ๊ฒฐ๋กœ ๋ด…๋‹ˆ๋‹ค. ์ฆ‰ 0๊ณผ 1 ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋น„์šฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๊ณผ 0์˜ ๋น„์šฉ์ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์„ฌ ์‚ฌ์ด์˜ ๋‹ค๋ฆฌ ๊ฑด์„ค ๋น„์šฉ์ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋‘ ์„ฌ ์‚ฌ์ด์˜ ๊ฑด์„ค์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.
  • ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์„ฌ์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n costs  return
4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

costs๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ์ด๋•Œ ์ดˆ๋ก์ƒ‰ ๊ฒฝ๋กœ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ์œผ๋กœ ๋ชจ๋‘๋ฅผ ํ†ตํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‚ด ํ•ด๋‹ต

#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(int n, vector<vector<int>> costs) {
    int answer = 0;
    vector<bool> visited(n, false);
    // ์šฐ์„ ์ˆœ์œ„ ํ : ๊ฐ€์ค‘์น˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ (first-๊ฐ€์ค‘์น˜, second-์ธ๋ฑ์Šค)
    priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> nodes;
    
    // ์ฒซ๋ฒˆ์งธ ์„ฌ ์ถ”๊ฐ€
    nodes.push({0 ,costs[0][0]});
    
    while(!nodes.empty())
    {
        // ํ˜„์žฌ ์„ฌ๊ณผ ๊ฐ€์ค‘์น˜ ํ์—์„œ ๊บผ๋‚ด๊ธฐ
        int curNode = nodes.top().second;
        int curWeight = nodes.top().first;
        nodes.pop();
        
        // ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ์„ฌ์ด๋ฉด ๋„˜์–ด๊ฐ„๋‹ค.
        if(visited[curNode])
            continue;
        
        // ์„ฌ ๋ฐฉ๋ฌธ, ๊ฐ€์ค‘์น˜ ํ•ฉ์‚ฐ
        visited[curNode] = true;
        answer += curWeight;
        
        for(int i = 0; i < costs.size(); ++i)
        {
            // ์—ฐ๊ฒฐ๋œ ์„ฌ์ธ์ง€ ๊ฒ€์ฆ (0๋ฒˆ ์ธ๋ฑ์Šค, 1๋ฒˆ ์ธ๋ฑ์Šค ์ด 2๋ฒˆ ๊ฒ€์‚ฌ)
            int idx = -1;
            for(int n = 0; n < 2; ++n)
            {
                if(curNode == costs[i][n])
                    idx = !n;
            }
            
            // ์—ฐ๊ฒฐ๋œ ์„ฌ์ด๋ผ๋ฉด ์šฐ์„ ์ˆœ์œ„ ํ์— ์„ฌ ์ถ”๊ฐ€
            if(idx != -1)
            {
                if(!visited[costs[i][idx]])
                {
                    nodes.push({costs[i][2], costs[i][idx]});
               }
            }
        }
    }
    return answer;
}

ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ ์œ ํ˜•๊ณผ ๋น„์Šทํ•ด์„œ ์ด๊ฒƒ๋„ ์ธ๋ฑ์Šค ์—ฌ๊ธฐ์ €๊ธฐ ์˜ฎ๊ฒจ๊ฐ€๋ฉฐ ํ‘ธ๋Š” ๋ฌธ์ œ์ธ๊ฐ€ ํ–ˆ๋”๋‹ˆ
์ƒ๊ฐ๋ณด๋‹ค ์ •์„์ ์ธ ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ ๋ฌธ์ œ์˜€๋‹ค.

์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

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

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

[๋ฐฑ์ค€] ์˜ค๋ชฉ(C++)  (0) 2023.04.24
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ(C++)  (1) 2023.04.23
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ตฌ๋ช…๋ณดํŠธ(C++)  (0) 2023.04.20
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ(C++)  (0) 2023.04.18
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ์•„์ดํ…œ ์ค๊ธฐ(C++)  (0) 2023.04.17
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] ์˜ค๋ชฉ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ตฌ๋ช…๋ณดํŠธ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ(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)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

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

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

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

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ(C++)
    ์ƒ๋‹จ์œผ๋กœ

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