본문 바로가기
TIL - 프로그래밍/Python 알고리즘

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

by chaemj97 2022. 6. 3.
728x90

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

 

1697번: 숨바꼭질

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

www.acmicpc.net


  • 생각
    • 최소 거리 관련 문제니깐 que!!

  • 코드
from collections import deque

# 수빈 위치, 동생 위치
N, K = map(int,input().split())

# 거리 문제니깐 que
def gogo(N,K):
    dist = [0] * (10 ** 5 + 1)
    deq = deque([N])
    
    while deq:
        # 현 위치
        c = deq.popleft()
        # 잡았다?
        if c == K:
            print(dist[K])
            break
        # 잡으로 가자
        for n in [c-1,c+1,c*2]:
            # 범위 내에 있고 그 위치에 간 적이 없어야 함
            if 0 <= n <= 10**5 and not dist[n]:
                # 이동 횟수
                dist[n] = dist[c] + 1
                deq.append(n)

gogo(N,K)

 

728x90
반응형

댓글