[BOJ] 1697번 숨바꼭질 python

chowisely·2020년 8월 19일
0

BOJ

목록 보기
4/70

https://www.acmicpc.net/problem/1697

문제
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.

input
5 17

output
4

import sys

n, k = map(int, sys.stdin.readline().split())
answer = 0
s = [n]
tmp = []
visited = [False] * 100001

if n != k:
    while len(s) != 0:
        for x in s:
            if x + 1 == k or x - 1 == k or x * 2 == k:
                tmp = []
                break
            
            if x + 1 <= 100000 and not visited[x + 1]:
                visited[x + 1] = True
                tmp.append(x + 1)
            if x - 1 >= 0 and not visited[x - 1]:
                visited[x - 1] = True
                tmp.append(x - 1)
            if x * 2 <= 100000 and not visited[x * 2]:
                visited[x * 2] = True
                tmp.append(x * 2)
        s = tmp
        tmp = []
        answer += 1

print(answer)

0개의 댓글