백준 1697번 숨바꼭질

DARTZ·2022년 6월 6일
0

알고리즘

목록 보기
83/135
n, k = map(int, input().split())
MAX = 100001
visited = [0] * MAX

def bfs():
    queue = deque([n])

    while queue:
        position = queue.popleft()

        if position == k:
            return visited[position]

        for next_visit in (position-1, position+1, position * 2):
            if 0 <= next_visit < MAX and not visited[next_visit]:
                visited[next_visit] = visited[position] + 1
                queue.append(next_visit)

print(bfs())

메모리 초과에 주의해야한다. 주어진 범위 0 <= number < 100001를 조건에 설정을 해줘야지 초과가 발생하지 않는다.

그리고 이동 순서를 -1, +1, *2 순서대로 설정해야한다. 그냥 문제 그대로 조건을 설정해놓자..ㅡㅡ

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글