[백준 온라인 저지] 숨바꼭질
문제 링크
https://www.acmicpc.net/problem/1697
나의 풀이
from collections import deque
def bfs(queue, visited, k):
while queue:
position, time = queue.popleft()
# 정해진 범위를 벗어났을 때
if position < 0 or position > len(visited)-1 or visited[position]:
continue
visited[position] = True
# 동생과 만났을 때
if position == k:
return time
else:
queue.append((position-1, time+1))
queue.append((position+1, time+1))
queue.append((position*2, time+1))
n, k = list(map(int, input().split()))
visited = [False for _ in range(200000)]
queue = deque()
queue.append((n, 0))
print(bfs(queue, visited, k))
풀이 회고
처음에 visited
리스트의 길이를 n, k 중에 더 큰 것의 길이로 해서 문제가 있었다. 넘어간 다음에 뒤로 오면서 찾을 때가 빠를 때도 있었기 때문이었다. 그래서 최대 가능한 범위의 두배로 길이를 잡고 했다. 정말 오랜만에 파이썬으로 푸니까 적응이 좀 안된다.
Author And Source
이 문제에 관하여([백준 온라인 저지] 숨바꼭질), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j03y14/백준-온라인-저지-숨바꼭질저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)