백준 13549. 숨바꼭질 3

2025. 1. 31. 18:41·백준

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

from collections import deque


def bfs(n, k):
    q = deque([n])
    arr = [-1] * 100001  # 방문 여부 및 걸린 시간 저장 (-1: 미방문)
    arr[n] = 0  # 시작점은 0초

    while q:
        v = q.popleft()

        if v == k:  # 동생 위치에 도달하면 시간 반환
            return arr[v]

        # 순간이동 (우선적으로 처리, 가중치 0)
        if 0 <= 2 * v < 100001 and arr[2 * v] == -1:
            arr[2 * v] = arr[v]  # 순간이동은 시간 증가 X
            q.appendleft(2 * v)  # 큐의 앞에 추가 (우선 탐색)

        # 걷기 (가중치 1)
        for next_v in (v - 1, v + 1):
            if 0 <= next_v < 100001 and arr[next_v] == -1:
                arr[next_v] = arr[v] + 1  # 1초 증가
                q.append(next_v)  # 큐의 뒤에 추가 (나중 탐색)


n, k = map(int, input().split())  # 수빈 위치, 동생 위치
print(bfs(n, k))

여기서 *2 를 +1, -1보다 뒤에 배치하면 틀린다...

🛑 순간이동을 큐 앞에 넣어야 하는 이유

✅ popleft()는 큐의 앞에서 데이터를 가져오므로, 먼저 넣은 값이 먼저 탐색됨.
✅ 순간이동(*2)은 시간이 0초이므로 가장 빨리 탐색해야 최단 경로가 보장됨.
✅ 만약 순간이동을 큐 뒤에 넣으면, 순간이동이 늦게 처리되어 최적의 경로를 놓칠 수 있음!
✅ 따라서 순간이동을 appendleft()로 큐 앞에 추가해야 올바른 정답이 나옴.

💡 즉, 순간이동을 큐 뒤에 넣으면 "시간초과"가 아니라 "틀린 답"이 나올 수도 있습니다! 🚨

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 14442. 벽 부수고 이동하기 2  (0) 2025.02.01
백준 13913. 숨바꼭질 4  (0) 2025.01.31
백준 9466. 텀 프로젝트  (0) 2025.01.30
백준 5427. 불  (0) 2025.01.29
백준 10026. 적록색약  (0) 2025.01.29
'백준' 카테고리의 다른 글
  • 백준 14442. 벽 부수고 이동하기 2
  • 백준 13913. 숨바꼭질 4
  • 백준 9466. 텀 프로젝트
  • 백준 5427. 불
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    개발자취업
    Til
    코딩테스트준비
    99클럽
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 13549. 숨바꼭질 3
상단으로

티스토리툴바