[백준] 13549번 숨바꼭질3 - 파이썬/BFS

JinUk Lee·2022년 12월 27일
0

백준 알고리즘

목록 보기
3/78

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

from collections import deque

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

dx = [2,-1,1]

visited = [0] * 100001

def bfs(N,K):

    if N==K:
        return 0

    q = deque([(N, 0)])

    while q:

        cur_x,time = q.popleft()

        for i in range(3):

            if i == 0:

                nx = cur_x * dx[0]

            else:

                nx = cur_x + dx[i]

            if 0<=nx<100001 and visited[nx]==0:
                visited[nx]=True
                if i == 0:
                    q.append((nx,time))
                    if nx == K:
                        return time
                else:
                    q.append((nx,time+1))
                    if nx == K:
                        return time+1


print(bfs(N,K))

N과 K가 같을 때 조건을 생각하지 못해 오답이 발생하였다.

이 조건만 생각한다면 쉽게 풀 수 있는 것 같다.

profile
개발자 지망생

0개의 댓글