나의 풀이
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 |