https://school.programmers.co.kr/learn/courses/30/lessons/49189
#문제 간단 정리
bfs를 활용해서 거리 측정
#문제 해결 방법
bfs를 활용해서 가장 먼 노드의 개수를 측정해 주면 된다
양방향 노드기 때문에 양방향 설정에 주의하도록 하자
그 이외에는 딱히 기본 bfs 기 때문에 주의할 건 없다.
#전체 코드
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <climits>
#include <iostream>
using namespace std;
int solution(int n, vector<vector<int>> edge) {
vector<vector<int>> graph(n + 1);
for ( auto e : edge) {
graph[e[0]].push_back(e[1]);
graph[e[1]].push_back(e[0]);
}
vector<bool> visited(n + 1, false);
vector<int> dist(n + 1, 0);
queue<int> q;
q.push(1);
visited[1] = true;
int maxDist = 0;
while (!q.empty()) {
int now = q.front();
q.pop();
for (int next : graph[now]) {
if (!visited[next]) {
q.push(next);
visited[next] = true;
dist[next] = dist[now] + 1;
maxDist = max(maxDist, dist[next]);
}
}
}
int count = 0;
for(int i=1; i<=n; i++){
if(dist[i] == maxDist){
count++;
}
}
for(int a : dist){
cout << a << ' ';
}
return count;
}
'[프로그래머스] > lv.3' 카테고리의 다른 글
[프로그래머스] 보석 쇼핑 [C++][lv.3] 2020 카카오 인턴십 (0) | 2024.06.28 |
---|---|
[프로그래머스] 순위 [C++][lv.3] 코딩테스트 고득점 Kit (0) | 2024.05.10 |
[프로그래머스] 단속카메라 [C++][lv.3] (0) | 2024.04.29 |
[프로그래머스] 베스트앨범 [C++] [lv.3] (0) | 2024.04.29 |
[프로그래머스] 자물쇠와 열쇠 / 2020_카카오_공채 [C++][lv.3] (0) | 2023.08.12 |