- 이동할 수 있는 경우의수가 8가지가 있는데 각각 방문표시를 하며 풀었다
from collections import deque
used = [0] * 100001
A,B,N,M = map(int,input().split())
q = deque([N])
while q:
tmp = q.popleft()
if tmp == M: # 해당위치가 목표지점이라면 break
result = used[tmp]
break
if tmp - 1 >= 0 and used[tmp - 1] == 0:
used[tmp - 1] = used[tmp] + 1
q.append(tmp - 1)
if tmp + 1 <= 100000 and used[tmp + 1] == 0:
used[tmp + 1] = used[tmp] + 1
q.append(tmp + 1)
if tmp - A >= 0 and used[tmp - A] == 0:
used[tmp - A] = used[tmp] + 1
q.append(tmp - A)
if tmp - B >= 0 and used[tmp - B] == 0:
used[tmp - B] = used[tmp] + 1
q.append(tmp - B)
if tmp + A <= 100000 and used[tmp + A] == 0:
used[tmp + A] = used[tmp] + 1
q.append(tmp + A)
if tmp + B <= 100000 and used[tmp + B] == 0:
used[tmp + B] = used[tmp] + 1
q.append(tmp + B)
if tmp * A <= 100000 and used[tmp * A] == 0:
used[tmp * A] = used[tmp] + 1
q.append(tmp * A)
if tmp * B <= 100000 and used[tmp * B] == 0:
used[tmp * B] = used[tmp] + 1
q.append(tmp * B)
print(used[tmp])
왜 틀렸을까 ?
- 인덱스에러, 문제에선 10만번까지 갈 수 있는데 if문에서 100001까지 범위를 지정하여 인덱스에러가 났었다.