티스토리 뷰

백준

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

'백준' 카테고리의 다른 글

N과 M(1)  (0) 2021.10.28
C - 백준14501번. 퇴사  (0) 2020.08.14
C++ - 백준 1149번. RGB거리  (0) 2020.04.20
C++ - 백준 1931번. 회의실배정  (0) 2020.04.17
C - 백준 2293번. 동전1  (0) 2020.04.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함