문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/49189
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- 1번 노드에서 출발 해서 각 노드들에 최단 경로로 도착하는데 그 중에 가장 멀리 떨어진 노드들의 갯수를 출력하는 문제
- 다익스트라로 풀었는데 노드 갯수만 적었다면 bfs dfs도 가능할듯?
소스 코드
import heapq
INF = int(1e9)
def solution(n, edge):
answer = 0
gr = [[]for i in range(n+1)]
dit = [INF]*(n+1)
dit[1]=0
q = []
for s,e in edge:
gr[s].append(e)
gr[e].append(s)
heapq.heappush(q,(0,1))
m=0
while(q):
dd, cur = heapq.heappop(q)
for next in gr[cur]:
d = dd+1
if dit[next]>d:
dit[next]=d
heapq.heappush(q,(d,next))
m=max(m,d)
return dit.count(m)
print(solution(6,[[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]]))
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[탐색] 여행 경로 (python) (1) | 2023.04.16 |
---|---|
[그리드] 섬 연결하기 (python) (1) | 2023.04.11 |
[2020 카카오 인턴십] 스티커 모으기(2) (0) | 2023.04.07 |
[2019카카오] 불량 사용자 (0) | 2023.04.07 |
[해시] 베스트 앨범 (0) | 2023.04.06 |