https://www.acmicpc.net/problem/12761
방문의 이동 횟수를 잘 기록 해주면 된다.
from collections import deque
a,b,n,m = map(int, input().split())
visited =[-1]*(100000+1 )
def bfs(start):
q = deque()
q.append((start,0))
visited[start]=0
while q :
x ,dist= q.popleft()
if x == m :
return dist
if x+1 < 100000+1 and visited[x+1] == -1 :
visited[x+1] =dist + 1
q.append((x+1 , dist+1 ))
if 0<=x-1 and visited[x-1] == -1 :
visited[x-1] =dist + 1
q.append((x-1 , dist+1 ))
if x+a < 100000+1 and visited[x+a] == -1 :
visited[x+a] =dist + 1
q.append((x+a , dist+1 ))
if x+b < 100000+1 and visited[x+b] == -1 :
visited[x+b] =dist + 1
q.append((x+b , dist+1 ))
if 0<=x-a and visited[x-a] == -1 :
visited[x-a] =dist + 1
q.append((x-a , dist+1 ))
if 0<=x-b and visited[x-b] == -1 :
visited[x-b] =dist + 1
q.append((x-b , dist+1 ))
if x*a < 100000+1 and visited[x*a] == -1:
visited[x*a] =dist + 1
q.append((x*a , dist+1 ))
if x*b< 100000+1 and visited[x*b] == -1 :
visited[x*b] =dist + 1
q.append((x*b , dist+1 ))
ans =bfs(n)
print(ans)
'알고리즘 문제풀이' 카테고리의 다른 글
양치기 꿍[백준 3187] (0) | 2025.01.30 |
---|---|
텔레포트 정거장[백준 18232] (0) | 2025.01.29 |
너구리 구구[백준 18126] (1) | 2025.01.28 |
거리가 k이하인 트리 노드에서 사과 수확하기[백준 25516] (0) | 2025.01.28 |
영상처리[백준 21938] (0) | 2025.01.27 |