Hanbit the Developer
[그리디] Python - 16953번, A → B(A to B) 본문
import sys
input = sys.stdin.readline
def dfs(num, cnt):
if num == B:
global Min
if Min == -1:
Min = cnt
else:
Min = min(Min, cnt)
return
nextNum = num*2
if nextNum <= B:
dfs(nextNum, cnt+1)
nextNum = int(str(num)+'1')
if nextNum <= B:
dfs(nextNum, cnt+1)
A, B = map(int, input().split())
Min = -1
dfs(A, 1)
print(Min)
다음 그림은 만약 입력값이 '2 41'로 들어왔다고 했을 때의 설명이다.
기본적으로 dfs를 통해 1. num*2 2. int(str(num)+'1')일 때를 탐색해주는데, 그 값이 B보다 크면 dfs를 하지 않는다.
결국 dfs에 들어온 num이 우리가 찾고 있는 B와 일치하면 전역변수 Min을 수정해준다.
'Algorithm > 백준' 카테고리의 다른 글
[그리디] Python - 2212번, 센서[Grid] Python - 2212번, 센서 (0) | 2021.04.04 |
---|---|
[그리디] Python - 15903번, 카드 합체 놀이 (0) | 2021.04.02 |
[그리디] Python - 1449번, 수리공 항승 (0) | 2021.03.30 |
[그리디] Python - 13305번, 주유소 (0) | 2021.03.29 |
[그리디] Python - 1783번, 병든 나이트 (0) | 2021.03.29 |