-
[백준] 13549번 문제 (숨바꼭질 3) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 10. 14. 13:58
https://www.acmicpc.net/problem/13549
from collections import deque import sys input = sys.stdin.readline n, k = map(int, input().split()) visited = [False] * 100001 q = deque() q.append([n, 0]) min_count = sys.maxsize while q: cur, count = q.popleft() visited[cur] = True if cur == k: min_count = min(min_count, count) if 0 <= cur + 1 < 100001 and not visited[cur + 1]: q.append([cur + 1, count + 1]) if 0 <= cur - 1 < 100001 and not visited[cur - 1]: q.append([cur - 1, count + 1]) if 0 <= cur * 2 < 100001 and not visited[cur * 2]: q.append([cur * 2, count]) print(min_count)
전형적인 bfs 문제다.
bfs를 알고 있다면 어렵지 않게 풀 수 있다.
한 가지 주의할 점은 순간이동은 0초 만에 갈 수 있다고 했으니 count를 queue에 추가할 때 그 값 그대로 추가하는 점이다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1149번 문제 (RGB거리) 파이썬(Python) 풀이 (0) 2021.12.27 [백준] 14226번 문제 (이모티콘) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 13913번 문제 (숨바꼭질 4) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 12851번 문제 (숨바꼭질 2) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 1743번 문제 (음식물 피하기) 파이썬(Python) 풀이 (0) 2021.10.14