[BOJ] 18352: 특정 거리의 도시 찾기

이슬비·2023년 3월 27일
0

Algorithm

목록 보기
99/110
post-thumbnail

언제나 모든 문제들이 BFS, DFS로 모두로 풀리는 건 아니구만 ,,

1. 다른 풀이

import sys
from collections import deque

input = sys.stdin.readline

# N 도시 수, M 도로 수, K 거리 정보 X 출발 도시
N, M, K, X = map(int, input().split(' '))
graph = [[] for _ in range(N+1)]

for _ in range(M):
  a, b =  map(int, input().split(' '))  
  graph[a].append(b)

distance = [-1] *(N+1)
distance[X] = 0

# BFS 부분
q = deque([X])
while q:
  now = q.popleft()

  for next in graph[now]:
    if distance[next] == -1:
      distance[next] = distance[now]+1
      q.append(next)

# K값이 distance에 있다면 i값출력 없다면 -1 출력
if K in distance:
  for i in range(1, N+1):
    if distance[i] == K:
      print(i)
      check = True
else:
  print(-1)

풀이출처: https://wonyoung2257.tistory.com/71

  • 이 문제에서 방문 여부를 정하는 visited 변수를 distance 변수, 즉 거리 변수로 사용해준다.
  • -1은 아직 방문하지 않음을 의미한다.
  • 문제 설명 중 도시 x에서 x로 가는 최단 거리는 항상 0 이니 distance[X] = 0 이런 식으로 초기화를 해준다.
  • 방문하지 않은 도시(next)에 현재 탐색 중인 도시 (now)를 넣어준다.
  • visited 변수를 오롯이 visited로 사용하지 말고 다양하게 사용할 줄 알아야겠다 ...

2. 마치며

한동안 안 풀었더니 머리 또 굳어버림 ...
창의력을 써 !

profile
정말 알아?

0개의 댓글