[BOJ] 1697. 숨바꼭질

2025. 7. 22. 20:26·BOJ

📌 문제 제목

문제 링크: BOJ 1697

🗒️ 문제 설명

수빈이는 현재 점 N (0 <= N <= 100,000)에 있고, 동생은 점 K (0 <= K <= 100,000)에 있다.

수빈이는 걷거나 순간이동 할 수 있다.

수빈이의 위치가 X일 때, 1초 후에 X-1 or X+1 or 2*X로 이동할 수 있다.


💡 문제 해결 아이디어

  • 수빈이의 좌표 N을 큐에 넣는다.
  • for 문에 걷기와 순간이동한 결과를 넣는다.
  • 큐에 popleft를 할 때 K와 같으면 dist[K]를 출력한다.

⌛️ 시간 복잡도

  • O(N)

✅ 최종 코드

import sys
from collections import deque
input = sys.stdin.readline

N, K = map(int, input().split())

queue = deque([N])
dist = [-1] * 100_001
dist[N] = 0

while queue:
    nx = queue.popleft()
    if nx == K:
        print(dist[nx])
        exit(0)
    for res in [2*nx, nx-1, nx+1]:
        if not (0 <= res < 100_001):
            continue
        if dist[res] == -1:
            queue.append(res)
            dist[res] = dist[nx] + 1

 

'BOJ' 카테고리의 다른 글

[BOJ] 10026. 적록색약  (0) 2025.07.23
[BOJ] 1012. 유기농 배추  (0) 2025.07.23
[BOJ] 4179. 불!  (0) 2025.07.22
[BOJ] 7576. 토마토  (0) 2025.07.22
[BOJ] 2178. 미로 탐색  (0) 2025.07.22
'BOJ' 카테고리의 다른 글
  • [BOJ] 10026. 적록색약
  • [BOJ] 1012. 유기농 배추
  • [BOJ] 4179. 불!
  • [BOJ] 7576. 토마토
rubato.dev
rubato.dev
  • rubato.dev
    rubato.dev
    rubato.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (33) N
      • BOJ (28) N
      • 알고리즘 (4) N
      • TIL (0)
      • Project (1) N
  • 인기 글

  • 태그

    PriorityQueue
    Algorithm
    backtracking
    스택
    Next.js
    투 포인터
    dp
    PYTHON
    DFS
    BFS
    Zelda
    BOJ
    Project
    stack
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
rubato.dev
[BOJ] 1697. 숨바꼭질
상단으로

티스토리툴바