본문 바로가기
코딩테스트 파이썬/백준

A → B ( 16953 )

by 세용용용용 2025. 1. 11.

16953번: A → B

 

나의 풀이

import sys

def _dfs(B, n_num, n_ct):
    answer = float('inf')
    if n_num >= B:
        if (n_num == B):
            return n_ct
        else:
            return float('inf')
    else:
        answer = min(answer, _dfs(B, n_num * 2, n_ct + 1))
        answer = min(answer, _dfs(B, int(str(n_num) + '1'), n_ct + 1))
    return answer

def _main(A, B):
    answer = _dfs(B, A, 1)
    if (answer == float('inf')):
        return -1
    return answer

A, B = map(int, sys.stdin.readline().rstrip().split())
print(_main(A, B))

 

시간 복잡도

_dfs(B, n_num, n_ct) : 조건 만족시 까지 dfs 알고리즘, 깊이가 늘어날수록 2**(n) 횟수 수행
해당 알고리즘 시간 복잡도 : 지수형 시간 복잡도 ( 2**len(str(B)) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

스티커 ( 9465번 )  (0) 2025.01.14
정수 삼각형 ( 1932번 )  (0) 2025.01.13
트리의 부모 찾기 ( 11725번 )  (0) 2025.01.10
가장 긴 증가하는 부분 수열 ( 11053번 )  (0) 2025.01.10
이중 우선순위 큐  (0) 2025.01.07