Programmers_DFS/BFS 가장 먼 노드(python)
프로그래머스 -가장 먼 노드 문제 입니다.
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/49189
2. 분류 및 난이도
Programmers 문제입니다.
그래프 문제입니다.
Level 3난이도의 문제입니다.
3. 생각한 것들(문제 접근 방법)
- 처음에는 다익스트라로 풀었지만, 시간초과가 나왔습니다.
- 다익스트라는 가중치값을 넣어서 풀었는데 모든 노드의 거리가 1로 같으므로 BFS로 바꿔서 풀었더니 통과하였습니다.
4. 접근 방법을 적용한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from collections import deque
def solution(n, edge):
# 방문처리겸 거리를 담아놓을 리스트입니다.
v = [0] * (n+1)
# 그래프
graph = [[] for _ in range(n+1)]
for i in range(len(edge)) :
graph[edge[i][0]].append(edge[i][1])
graph[edge[i][1]].append(edge[i][0])
#BFS
dq = deque()
# 두번째값은 거리입니다.
dq.append([1,1])
v[1] = 1
while dq:
x,count = dq.popleft()
for i in range(len(graph[x])) :
if v[graph[x][i]] == 0 :
dq.append([graph[x][i],count+1])
v[graph[x][i]] = count+1
#리스트 내에서 가장 큰 값을 찾습니다.
maxN = max(v)
#큰 값을 기준으로 갯수를 세줍니다.
return v.count(maxN)
5. 결과
필요시. c++ 짜드리겠습니다. 설명이 필요시 댓글달아주세요.
This post is licensed under CC BY 4.0 by the author.