from collections import deque
def find(N):
que = deque()
que.append(N)
mapData[N][0] = 0
mapData[N][1] = 1
while que:
temp = que.popleft()
for nx in (temp + 1, temp - 1, temp * 2):
if 0 <= nx < LIMIT :
if mapData[nx][0] == -1:
mapData[nx][0] = mapData[temp][0] + 1
mapData[nx][1] = mapData[temp][1]
que.append(nx)
elif mapData[nx][0] == mapData[temp][0] + 1:
mapData[nx][1] += mapData[temp][1]
LIMIT = 100001
N, K = map(int, input().split())
mapData = [[-1, 0] for _ in range(LIMIT)] # 값, 방법, 출현 수
find(N)
print(mapData[K][0])
print(mapData[K][1])
조건문을 잘 못써서.. 되게 오래 헤멧다...
'Algorithm > BFS, DFS' 카테고리의 다른 글
[백준] 18352번 특정 거리의 도시 찾기 (0) | 2021.02.08 |
---|---|
[백준] 12761번 돌다리 (0) | 2021.02.04 |
[백준] 2206번 벽 부수고 이동하기 (0) | 2020.09.24 |
[백준] 7562번 나이트의 이동 (0) | 2020.09.23 |
[백준] 1600번 말이 되고픈 원숭이 (0) | 2020.09.23 |
댓글