목차

숨바꼭질 3

ps
링크acmicpc.net/…
출처BOJ
문제 번호13549
문제명숨바꼭질 3
레벨골드 5
분류

DP

시간복잡도O(logn)
인풋사이즈n<=100,000
사용한 언어Python
제출기록30840KB / 68ms
최고기록64ms
해결날짜2022/09/22

풀이

코드

"""Solution code for "BOJ 13549. 숨바꼭질 3".

- Problem link: https://www.acmicpc.net/problem/13549
- Solution link: http://www.teferi.net/ps/problems/boj/13549
"""


def main():
    N, K = [int(x) for x in input().split()]

    k1, d1, k2, d2 = K, 0, K - 1, 1
    answer = abs(K - N)
    while k2 > 0:
        if k1 % 2 == 1:
            k1, d1, k2, d2 = k1 // 2 + 1, d1 + 1, k2 // 2, min(d1 + 1, d2)
        else:
            k1, d1, k2, d2 = k1 // 2, min(d1, d2 + 1), k2 // 2, d2 + 1
        answer = min(answer, d1 + abs(N - k1), d2 + abs(N - k2))
    print(answer)


if __name__ == '__main__':
    main()