세용용용용
2023. 11. 17. 17:31



나의 코드
from collections import deque
def solution(n, road, k):
answer = 0
# 이어지는 경로들과 거리의 리스트로 담아 딕셔너리 생성
graph = {}
for i in road:
if i[0] not in graph:
graph[i[0]] = [(i[1],i[2])]
else:
graph[i[0]].append((i[1],i[2]))
if i[1] not in graph:
graph[i[1]] = [(i[0],i[2])]
else:
graph[i[1]].append((i[0],i[2]))
# 방문 경로
visit = [0]*n
visit[0] = 1
# queue생성해주고 첫번쨰 경우를 넣어준다
queue = deque()
queue.append((1,0))
#print(queue)
#print(graph)
# 반복문 동작
while queue:
# 노드와 거리를 변수에 저장해주고
node, dt = queue.popleft()
# graph를 돌며 k보다 거리가 작은 조건에서
# 방문 안했거나 기존 거리보다 짧을 경우 queue에 넣어주고 visit치환
for nd_x,dt_y in graph[node]:
if dt+dt_y<=k and (visit[nd_x-1]==0 or dt+dt_y<visit[nd_x-1]):
queue.append((nd_x, dt+dt_y))
visit[nd_x-1] = dt+dt_y
#print(visit)
# 최종적으로 방문 가능한 경우의수 리턴
answer = n-visit.count(0)
return answer

감사합니당!!