백준

Python 백준 18352 특정 거리의 도시 찾기

코딩하는 둥아 2022. 8. 3. 20:03
728x90
  • 파이썬으로 알고리즘을 풀 때, input을 입력받는 과정에서 input()을 사용하면 시간 초과가 나올 수 있음!
  • sys.stdin.readline 을 사용하여 입력값을 받자
  • 거리 정보를 받을 때 아래와 같이 리스트의 형식으로 저장하면 특정 노드로부터 시작하는 거리가 있는지 파악하기 수월하다!
  • queue를 사용하여 탐색할 노드를 파악한다
for _ in range(M):
  a, b = map(int, input().split())
  dist[a].append(b)

 

✅ 문제 풀이 코드

import sys
from collections import deque
input = sys.stdin.readline

N, M, K, X = map(int, input().split())
dist = [[] for _ in range(N+1)]
cost = [-1] * (N+1)

# 거리 정보 입력받기
for _ in range(M):
  a, b = map(int, input().split())
  dist[a].append(b)

def searchDist(start):
  q = deque()
  q.append(start)
  cost[start] = 0 # 시작하는 노드 거리 초기화

  while q:
    tmp = q.popleft()
  
    for next in dist[tmp]:
      # tmp로부터 출발하는 도로가 있는지 찾는다
      if cost[next] == -1:  # 방문한적 없는 도시이면
        cost[next] = cost[tmp] + 1 # 현재 도시에서의 cost에 + 1 해주기
        q.append(next)

searchDist(X)

# 정답 출력하기
flag = True
for i in range(1, N+1):
  if cost[i] == K:  
    print(i)
    flag = False

if flag : print(-1)

 

728x90