728x90
반응형
문제 출처: https://www.acmicpc.net/problem/1697
풀이:
import sys
from collections import deque
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')
def bfs(v):
Q = deque([N])
while Q:
v = Q.popleft()
if v == M :
return visited[v]
for next_v in (v-1, v+1, 2*v):
if 0 <= next_v <= 100000 and not visited[next_v]:
visited[next_v] = visited[v] + 1
Q.append(next_v)
N,M = map(int,input().split(" "))
visited = [0] * 100001
print(bfs(N))
처음엔 백트래킹을 사용해서 풀려고했지만 대 실패
bfs풀이
visited 100000 개 0 으로 만들고
시작 지점 N 을 Q 에 넣는다
Q에서 뽑았을때 도착지와 같으면 return
갈수 있는 방향은 Q에서 뽑은 v 에서 -1,+1,*2 한 곳을 갈수 있다.
방문하지 않은곳이여야하고 0이상 10만 이하여야한다.
이 전 미로 문제처럼 +1 해준다
반응형
댓글