백준_13549 (숨바꼭질3_1차원 배열 BFS - 다시 풀어볼 것)

RostoryT·2022년 6월 6일
0

BFS DFS

목록 보기
13/24


1차적으로 푼 -> 시간초과

from collections import deque
#import sys

n, k = map(int, input().split())
#n, k = map(int, sys.stdin.readline().split(' '))
visit = [0] * (k+1)

answer = 0

que = deque()
que.append(n)

while que:
    now = que.popleft()
    
    # 전처리 수행
    if now == k:
        print(visit[now]+1)  # 0부터 시작했으므로
        break
        
    for nx in [now-1, now+1, now*2]:
        if 0 <= nx < (k+1):
            if nx == now*2:                
                que.append(nx)              # 초 ++ (X)
            else:
                visit[nx] = visit[now] + 1  # 초 ++ (O)
                que.append(nx)


블로그

from collections import deque

n, k = map(int, input().split())

queue = deque()
queue.append(n)
visited = [0] * 100001
ans = -1
while queue:
    x = queue.popleft()
    if x == k:
        ans = visited[x]
        break

    for nx in [x - 1, x+1, 2*x]:
        if 0 <= nx < 100001 and visited[nx] == 0:
            if nx == 2*x and x != 0:
                visited[nx] = visited[x]
                queue.appendleft(nx)
            else:
                visited[nx] = visited[x] + 1
                queue.append(nx)


print(ans)
profile
Do My Best

0개의 댓글