Algoritm/BOJ

[BOJ] 1697번:숨바꼭질

twoDeveloper 2021. 8. 16. 01:20

문제풀이

1)  bfs 알고리즘 사용

2) 이동 가능 범위 => n - 1, n + 1, n * 2

 

해답

from collections import deque

n, k = map(int, input().split())
MAX = 100001
time = [0] * MAX

def bfs():
    queue = deque()
    queue.append(n)
    
    while queue:
        v = queue.popleft()
        
        if v == k:
            print(time[v])
            return
        
        for i in (v - 1, v + 1, v * 2):
            if 0 <= i < MAX and not time[i]:
                time[i] = time[v] + 1
                queue.append(i)

bfs()

 

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

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 10773번:제로  (0) 2021.08.25
[BOJ] 7562번:나이트의 이동  (0) 2021.08.16
[BOJ] 2178번:미로 탐색  (0) 2021.08.13
[BOJ] 1012:유기농 배추  (0) 2021.08.09
[BOJ] 2667번:단지번호 붙이기  (0) 2021.08.05