본문 바로가기

# Coding/# 백준

[백준 / 13549] 숨바꼭질 3 - Python

728x90
반응형

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

 

13549번: 숨바꼭질 3

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

www.acmicpc.net

<풀이>

기존 숨바꼭질 문제에서 변형해왔다.

 

점프인 경우에만 time을 추가해주지 않고 진행하였다.

 

위치가 0인 경우에는 0 * 2가 무한으로 돌 수 있으므로 0인 경우는 점프를 계산해주지 않는다.

 

2022.04.06 - [# Coding/# 백준] - [백준 / 1697] 숨바꼭질 - Python

 

[백준 / 1697] 숨바꼭질 - Python

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순..

joinmycode.tistory.com

 

 

 

<전체 코드>

from collections import deque

n, k = map(int, input().split())
graph = [float('inf')] * 200000
queue = deque([[n, 0]])
graph[n] = 0

while queue:
    now, time = queue.popleft()
    if graph[now] < time:
        continue
    if now == 0:
        nexts = [now+1]
    elif now < k:
        nexts = [now-1, now+1, now*2]
    else:
        nexts = [now-1]
    for next in nexts:
        if next == now*2:
            if graph[next] >= time:
                graph[next] = time
                queue.append([next, time])
        elif graph[next] > time+1:
            graph[next] = time+1
            queue.append([next, time+1])

print(graph[k])
728x90
반응형