문제 출처
풀이
N, K = map(int, input().split())
if N >= K:
print(N-K)
for i in range(N, K-1, -1):
print(i, end=" ")
else:
length = max(100001, max(N, K)*2)
visited, path = [0]*length, ['']*length
visited[N], path[N] = 1, str(N)
q = [N]
time = 0
while 1:
if visited[K]:
break
nq = []
for i in q:
if i > K:
if 0 <= i+j < length and not visited[i+j]:
path[i-1] = path[i]+' '+str(i-1)
nq.append(i+j)
for j in i, 1, -1:
if 0 <= i+j < length and not visited[i+j]:
path[i+j] = path[i]+' '+str(i+j)
nq.append(i+j)
path[i] = ''
nq = list(set(nq))
time += 1
for i in nq:
visited[i] = 1
q = nq
print(time)
print(path[K])
'백준' 카테고리의 다른 글
| [python] 3078. 좋은 친구 (1) | 2019.08.26 |
|---|---|
| [python] 16925. 문자열 추측 (0) | 2019.08.21 |
| [python] 13549. 숨바꼭질 3 (0) | 2019.08.19 |
| [python] 13549. 숨바꼭질 3 (0) | 2019.08.19 |
| [python] 12851. 숨바꼭질 2 (0) | 2019.08.19 |