💡 문제 해결 아이디어
🛠 피드백
- 깜빡한 사실 : 그래프를 주어진 그대로 두는 것보다, Adjacency List나 Adjacency Matrix로 표현하는 것이 일반적이고, 효율적이다
- 따라서 dictionary 그 중에서도 defaultdict라는 것을 이용해 Adjacency List를 구현했다.
- 이후에, BFS를 통해서 연결된 모든 Node의 distance를 측정했다.
- 모든 edge의 길이가 동일하고, queue를 통한 BFS이므로 나중에 방문한 경우가 최단경로일 수가 없다.
내가 생각한 아이디어
- deque를 이용해서 queue를 구현하고, 주어진 edge들을 for문으로 반복하면서 인접한 노드들을 방문하는 BFS를 통해 풀어보자!
💻 작성된 코드(수정)
from collections import deque, defaultdict
def solution(n, edge):
distance = [0] * (n+1)
vertex = defaultdict(list)
for e in edge:
vertex[e[0]].append(e[1])
vertex[e[1]].append(e[0])
queue = deque()
queue.append(1)
while queue:
recent = queue.popleft()
dist = distance[recent]
for neighbor in vertex[recent]:
if neighbor != 1 and distance[neighbor] == 0:
queue.append(neighbor)
distance[neighbor] = dist + 1
return distance.count(max(distance))