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 |