[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ(C++)

2023. 5. 15. 11:52ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

n๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋…ธ๋“œ๋ž€ ์ตœ๋‹จ๊ฒฝ๋กœ๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋…ธ๋“œ๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ n, ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด vertex๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, 1๋ฒˆ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋…ธ๋“œ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ n์€ 2 ์ด์ƒ 20,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ์ด๋ฉฐ ์ด 1๊ฐœ ์ด์ƒ 50,000๊ฐœ ์ดํ•˜์˜ ๊ฐ„์„ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • vertex ๋ฐฐ์—ด ๊ฐ ํ–‰ [a, b]๋Š” a๋ฒˆ ๋…ธ๋“œ์™€ b๋ฒˆ ๋…ธ๋“œ ์‚ฌ์ด์— ๊ฐ„์„ ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n vertex  return
6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3

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

์˜ˆ์ œ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๊ณ , 1๋ฒˆ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋…ธ๋“œ๋Š” 4,5,6๋ฒˆ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

๋‚ด ํ•ด๋‹ต

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

#define MAX 20000

using namespace std;

int solution(int n, vector<vector<int>> edge) {
    int answer = 0;
    int max_weight = 0;
    int visit[MAX] = {false, };
    vector<vector<int>> link(n+1);
    queue<pair<int, int>> q; // first - index, secons - weight
    
    // ๋…ธ๋“œ ์—ฐ๊ฒฐ ์ •๋ณด ์ž…๋ ฅ
    for(const auto& v : edge)
    {
        link[v[0]].push_back(v[1]);
        link[v[1]].push_back(v[0]);
    }
    
    // 1๋ฒˆ ๋…ธ๋“œ ํ์— ๋„ฃ๊ธฐ
    q.push({1, 0});
    
    // BFS
    while(!q.empty())
    {
        int cur = q.front().first;
        int weight = q.front().second;
        q.pop();
        
        // ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฉด ๊ฑด๋„ˆ ๋›ด๋‹ค.
        if(visit[cur-1])
            continue;
        
        // ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์ฒดํฌ
        visit[cur-1] = true;
        
        // max_weight ์ฒดํฌ
        if(weight > max_weight)
        {
            max_weight = weight;
            answer = 0;
        }
        if(weight == max_weight)
        {
            ++answer;
        }
        
        // ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ q์— ๋„ฃ๊ธฐ
        for(const auto& v : link[cur])
        {
            q.push({v, weight+1});
        }
    }
    
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์„ ์ž… ์„ ์ถœ ์Šค์ผ€์ค„๋ง (C++)  (0) 2023.05.18
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ(C++)  (0) 2023.05.16
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ (C++)  (0) 2023.05.12
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ์ž…๊ตญ์‹ฌ์‚ฌ(C++)  (0) 2023.05.11
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ๋“ฑ๊ตฃ๊ธธ(C++)  (0) 2023.05.09
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์„ ์ž… ์„ ์ถœ ์Šค์ผ€์ค„๋ง (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ํŒŒ๊ดด๋˜์ง€ ์•Š์€ ๊ฑด๋ฌผ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ (C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.3 / ์ž…๊ตญ์‹ฌ์‚ฌ(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (141) N
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (135) N
        • Unreal Engine (5) N
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (6) N
        • ์˜ค๋‹ต๋…ธํŠธ (2)
        • UE5 GameLift Server Test Project (1)
        • TIL (3) N
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] level.3 - ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ(C++)
์ƒ๋‹จ์œผ๋กœ

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