BOJ - 25418

주의·2024년 1월 8일
0

boj

목록 보기
58/214

백준 문제 링크
정수 a를 k로 만들기

❓접근법

  1. BFS를 사용했다.
  2. 방문 처리할 변수 visited를 만들었다.
  3. bfs 함수 내에서 queue에 (현재 숫자, cnt)를 넣어서
    현재 숫자가 목표 숫자와 같다면 cnt를 반환
    현재 숫자 + 1 <= K 이고 방문하지 않았다면 방문 처리 후 queue에 삽입
    현재 숫자 * 2 <= K 이고 방문하지 않았다면 방문 처리 후 queue에 삽입
  4. 마지막으로 bfs(A)를 실행시키면 끝!

👌🏻코드

from collections import deque

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

visited = [False] * (K+1)

def bfs(x):
    queue = deque()
    queue.append((x,0))
    
    visited[x] = True
    
    while queue:
        v, cnt = queue.popleft()
        
        if v == K:
            return cnt
        
        
        if v+1 <= K:
            if not visited[v+1]:
                visited[v+1] = True
                queue.append((v+1, cnt + 1))
                
        if v * 2 <= K:
            if not visited[v * 2]:
                visited[v * 2] = True
                queue.append((v * 2, cnt + 1))
print(bfs(A))

0개의 댓글