Coding Test/baekjoon

[백준 13549] 숨박꼭질 3 - python (solved.ac - 골드 5)

조용장 2022. 6. 7. 14:06

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

 

13549번: 숨바꼭질 3

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

www.acmicpc.net

풀이

문제를 보았을때 알수있는 힌트

이전에 풀었던 숨바꼭질 1,2 문제들 과 유사하게 풀면 되는데 그중에 2*x의 경우에는 시간을 증가하지 않게 하면 쉽게 풀리는 문제이다.

 

from collections import deque


def bfs(v):
    count = 0
    q = deque([[v, count]])
    while q:
        v = q.popleft()
        e = v[0]
        count = v[1]
        if not visited[e]:
            visited[e] = True
            if e == K:
                return count
            if (e * 2) <= 100000:
                q.append([e * 2, count])
            if (e - 1) >= 0:
                q.append([e - 1, count+1])
            if (e + 1) <= 100000:
                q.append([e + 1, count+1])
    return count

N, K = map(int, input().split())
visited = [False] * 100001
print(bfs(N))

https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon13549.py

 

GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리

코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.

github.com