백준 / 실버 3 / 1463 1로 만들기 / Python [완전탐색, 반복, 재귀, minimize]

jjin·2023년 10월 21일
0

https://www.acmicpc.net/problem/1463

백트래킹이 나름 적용된 풀이

import sys
input = sys.stdin.readline
X = int(input())
mincnt = 2147483647

def op(X, cnt):
    global mincnt
    if X < 1 or cnt > mincnt: #유망성 검사
        return
    if X == 1:
        mincnt = min(mincnt, cnt)
    cnt += 1
    if X % 3 == 0:
        op(X // 3, cnt)
    if X % 2 == 0:
        op(X // 2, cnt)
    op(X - 1, cnt)

op(X, 0)
print(mincnt)
profile
진짜

0개의 댓글