문제링크는 아래에서 확인해주세요!
https://www.acmicpc.net/problem/18352
BFS
알고리즘을 사용하기로 결정deque
사용input = sys.stdin.readline
설정import sys
from collections import deque
input = sys.stdin.readline
N, M, K, X = map(int, input().split())
city = [[] for _ in range(N+1)]
# 그래프 초기 설정
for _ in range(M):
a, b = map(int, input().split())
city[a].append(b)
# 최단 거리 표시 초기 설정
distances = [-1] * (N+1)
distances[X] = 0
queue = deque([X]) # BFS를 위해 초기 큐 설정
while queue:
node = queue.popleft()
for next in city[node]:
if distances[next] == -1: # 방문한 적이 없는 노드인경우
distances[next] = distances[node] + 1
queue.append(next)
isFind = False
for idx in range(1, N+1):
if distances[idx] == K:
print(idx)
isFind = True
if isFind == False:
print(-1)
일단 혼자서 풀지 못했다. 구글링을 통해 코드 참조를 좀 했다.
BFS와 DFS를 머릿속에서 떠올리기가 아직 좀 많이 어려운 것 같다.
그리고 언제 BFS를 써야하고 언제 DFS를 써야하는지 항상 헷갈리는데 나름 괜찮은 자료를 가져와봤다. 틈틈히 찾아서 보자.
그리고 코딩테스트 공부를 사실 나는 굳이 할 필요는 없다. 아니 굳이 할 필요 없다기 보다는 코딩테스트 보다 내 백엔드 개발 역량 향상에 더욱 집중을 해야하긴 하지만 하루에 일어나서 1문제씩 푸는건 사실 뭐..ㅎ 그냥 매일매일 1문제씩 풀면서 엉켜있는 내 머리 푼답시고.. 열심히 해보자! (사실 조만간 코테하나 있어서 부랴부랴 하는것도..ㅎ)
아래 링크는 BFS와 DFS를 비교한 자료입니다!
https://ardentdays.tistory.com/11