웹찢남

[백준 1463 1로 만들기] PYTHON 본문

백준 Algorithm

[백준 1463 1로 만들기] PYTHON

harry595 2021. 2. 26. 19:32

 

10의 경우 나누기 2를 먼저하면 안되고 -1을 하고 나누기 9를 하는게 가장 빠르다.

그냥 WHILE문으로 조건을 따져 구해볼까 했으나 조건을 찾는게 어려울 것 같아 DP로 풀었다.

 

A=int(input())
dp=[0]*(A+1)
dp[1]=0
for i in range(2,A+1):
    dp[i]=dp[i-1]+1
    if(i%2==0 and dp[i]>dp[i//2]+1):
        dp[i]=dp[i//2]+1
    if(i%3==0 and dp[i]>dp[i//3]+1):
        dp[i]=dp[i//3]+1
print(dp[A])

위처럼 풀면 간단하게 정답을 구할 수 있다.

낮은 배열부터 최소의 경우를 따져 배열에 집어넣고

그러다 보면 결국 마지막 값까지 이를 사용해 구할 수 있다.

'백준 Algorithm' 카테고리의 다른 글

[백준 1916 최소비용 구하기] PYTHON  (0) 2021.02.26
[백준 1927 최소 힙] PYTHON  (0) 2021.02.26
[백준 11047 동전 0] PYTHON  (0) 2021.02.26
[백준 11399 ATM] PYTHON  (0) 2021.02.26
[백준 2839 설탕배달] PYTHON  (0) 2021.02.26
Comments