[백준:13549] 숨바꼭질 3

아빠는 외계연·2023년 9월 8일
0

CodingTest

목록 보기
12/18

https://www.acmicpc.net/problem/13549
골드 5
푼 시간 : 50분

import sys, heapq

N, K = map(int, input().split())
check = [int(1e9)] * 100001
check[N] = 0
heap = []
heapq.heappush(heap, (0, N))

while heap:
    move, idx = heapq.heappop(heap)
    if check[K] != int(1e9):
        break
    for value in [idx*2, idx-1, idx+1]:
        if 0 <= value < 100001:
            if check[value] == int(1e9) and idx*2 == value:
                heapq.heappush(heap, (move, value))
                check[value] = move
            elif check[value] == int(1e9):
                heapq.heappush(heap, (move+1, value))
                check[value] = move+1
print(check[K])

heap을 사용하면 무조건 최단시간을 구할 수 있으므로 check[value] == int(1e9)로 체크를 해야 한다.
이런 조건문 하나하나의 차이로 시간초과를 일으킬 수 있다는 걸 안 문제
꼭 다시 풀기!!

profile
Backend Developer

0개의 댓글