1. 문제
13913번: 숨바꼭질 4
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
2. 접근 방법
경로를 어떻게 담냐가 관건이었다.
처음에 ㅋㅋㅋㅋ
아무 생각없이 그냥 2차 행렬 만들어서 다 집어넣었다가
메모리 초과 바로 나버리고
그 전 인덱스만 담았다.
그렇게 해서 최종 인덱스에 도달했을 때,
하나씩 pop 해서 프린트했다.
3. 코드
python
from collections import deque
def bfs(n):
global visited, path
q = deque()
q.append(n)
visited[n] = 0
while q:
x = q.popleft()
if x == K:
print(visited[x])
p = []
while x != N:
p.append(x)
x = path[x]
p.append(n)
p.reverse()
print(*p)
return
for nx in (x*2, x+1, x-1):
if 0 <= nx <= MAX and visited[nx] == -1:
q.append(nx)
visited[nx] = visited[x] + 1
path[nx] = x
MAX = 100000
N, K = map(int, input().split())
visited = [-1] * (MAX+1)
path = [0] * (MAX+1)
bfs(N)
4. 마치며
마치며~!
'Algorithm > Python' 카테고리의 다른 글
[백준 10974] 모든 순열 (0) | 2021.05.10 |
---|---|
[백준 10973] 이전 순열 (0) | 2021.05.09 |
[백준 1697] 숨바꼭질 (0) | 2021.05.06 |
[백준 10972] 다음 순열 (0) | 2021.05.06 |
[백준 1476] 날짜 계산 (0) | 2021.05.05 |