728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/49189
📌 문제 접근 방법
- 인접 리스트를 활용해서 그래프 정보를 저장해준 뒤 bfs를 사용했다.
- bfs에서 방문체크를 할 때, 1번 노드와의 거리를 저장해줬다.
(가장 먼 거리가 1일 경우에도 1번 노드는 포함되지 않아야하므로 1번 노드는 -1로 방문체크를 해줬다.) - bfs 탐색이 끝난 후, visited를 순회하면서 거리가 가장 먼 노드의 개수를 세어 반환한다.
📌 코드
from collections import deque
def bfs(n, graph):
queue = deque()
queue.append((1, 0))
visited = [0 for _ in range(n+1)]
visited[1] = -1
while queue:
v, dist = queue.popleft()
for w in graph[v]:
if not visited[w]:
visited[w] = dist+1
queue.append((w, dist+1))
cnt = 0
for dist in visited:
if dist == max(visited):
cnt += 1
return cnt
def solution(n, edge):
graph = [[] for _ in range(n+1)]
for n1, n2 in edge:
graph[n1].append(n2)
graph[n2].append(n1)
answer = bfs(n, graph)
return answer
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 행렬 테두리 회전하기 (0) | 2021.12.16 |
---|---|
[PG/Python] 튜플 (0) | 2021.12.16 |
[PG/Python] 기능개발 (0) | 2021.12.09 |
[PG/Python] 불량 사용자 (0) | 2021.12.08 |
[PG/Python] 큰 수 만들기 (0) | 2021.12.02 |
댓글