Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 피보나치 수의 확장
- 경비원
- Smart Commit
- 빙산
- 파이썬
- 백준3190
- 124 나라의 숫자
- 백준 2564
- 코딩테스트
- 백준
- 단어 수학
- 백준 14499
- A와 B
- 부스트캠프
- 키패드 누르기
- 백준16954
- 백준1339
- 백준5710
- 백준12904
- 백준1788
- 로또의 최고 순위와 최저 순위
- 움직이는 미로 탈출
- 백준16234
- 소수 만들기
- 백준1697
- 인구 이동
- 완주하지 못한 선수
- 백준2573
- 프로그래머스
- 전기 요금
Archives
- Today
- Total
Today.dev
[PG_49189/Python] 가장 먼 노드 본문
문제
맞은 풀이
from collections import deque
def bfs(graph, n):
q = deque()
q.append((1, 0)) # 시작노드, 거리
visited = [-1 for x in range(n + 1)]
visited[1] = 0
while q:
x, d = q.popleft()
for i in graph[x]:
if visited[i] == -1:
visited[i] = d + 1
q.append((i, d + 1))
max_val = max(visited)
return visited.count(max_val)
def solution(n, edge):
# 1. 인접그래프 만들기
graph = [[] for _ in range(n + 1)]
for s, e in edge:
graph[s].append(e)
graph[e].append(s)
for e in graph:
e.sort()
# 2. 거리 구하기
return bfs(graph, n)
BFS를 이용해서 노드 사이의 최단 거리를 구했다. visited 배열이 방문 체크를 함과 동시에 노드 1부터의 거리를 가진다. visited 배열의 최댓값의 개수를 세면 가장 먼 노드의 개수를 구할 수 있다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[PG_42746/Python] 가장 큰 수 (0) | 2021.07.03 |
---|---|
[PG_12899/Python] 124 나라의 숫자 (0) | 2021.07.03 |
[PG_67256/Python] 키패드 누르기 (0) | 2021.06.22 |
[PG_77484/Python] 로또의 최고 순위와 최저 순위 (0) | 2021.06.22 |
[PG_42576/Python] 완주하지 못한 선수 (0) | 2021.06.22 |
Comments