반응형
Level 3, Graph
문제 : https://programmers.co.kr/learn/courses/30/lessons/49189
문제 설명
n개의 노드를 가진 그래프
각 노드는 1부터 n까지 번호가 매겨짐
1번 노드에서 가장 멀리 떨어진 노드의 개수
가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미
간선에 대한 정보가 담긴 2차원 배열 vertex
1번 노드로부터 가장 멀리 떨어진 노드 개수 반환
제한사항
- 2 <= n <= 20,000
- 간선은 양방향이며, 1 <= 간선의 수 <= 50,000
- vertex의 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 것을 의미
입출력 예
n | vertex | return |
6 | [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] | 3 |
입출력 예 설명
1번 노드에서 가장 멀리 떨어진 노드는 4,5,6번 노드
import heapq as hq
#다익스트라 사용
def solution(n, edge):
answer = 0
INF = int(10e9)
costs = [INF] * (n + 1)
arr = [[] for _ in range(n + 1)]
for [i, j] in edge:
#양 방향을 의미
arr[i].append(j)
arr[j].append(i)
q = []
hq.heappush(q, [0, 1])
costs[1] = 0
while q:
cost, now = hq.heappop(q)
if costs[now] < cost:
continue
for e in arr[now]:
# 비용은 모두 1로 동일
dist = cost + 1
if dist < costs[e]:
costs[e] = dist
hq.heappush(q, [dist, e])
# 2번 노드부터 최댓값 찾기
MAX = max(costs[2:])
for i in range(1, n + 1):
if costs[i] == MAX:
answer += 1
return answer
BFS와 다익스트라를 고민하다가 다익스트라를 연습하기 위해 다익스트라로 풀어보았습니다.
비용이 없어서 +1씩 증가시켜 주며 최솟값을 비교했습니다.
반응형
'ProblemSolving > Graph' 카테고리의 다른 글
프로그래머스 순위 (파이썬) (0) | 2022.05.18 |
---|