Algorithm/Python

[백준 1697] 숨바꼭질

🥭맹2 2021. 5. 6. 20:32

1. 문제

www.acmicpc.net/problem/1697

 

1697번: 숨바꼭질

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

www.acmicpc.net

2. 접근 방법

deque로 해서 x*2를 먼저 해결했다.

3. 코드

python

from collections import deque

def bfs(n):
    q = deque()
    q.append(n)
    visited[n] = 0
    while q:
        x = q.popleft()
        if x == K:
            print(visited[K])
            return
        for nx in (x*2, x+1, x-1):
            if 0 <= nx <= MAX:
                if visited[nx] == -1 or visited[nx] > visited[x] + 1:
                    q.append(nx)
                    visited[nx] = visited[x] + 1

MAX = 100000
N, K = map(int, input().split())
visited = [-1] * (MAX+1)
bfs(N)

4. 마치며

마치며~!

'Algorithm > Python' 카테고리의 다른 글

[백준 10973] 이전 순열  (0) 2021.05.09
[백준 13913] 숨바꼭질 4  (0) 2021.05.06
[백준 10972] 다음 순열  (0) 2021.05.06
[백준 1476] 날짜 계산  (0) 2021.05.05
[백준 15661] 링크와 스타트  (0) 2021.05.05