본문 바로가기

스터디 1일 1커밋

240415 [BOJ/백준] 25418. 정수 a를 k로 만들기

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

 

25418번: 정수 a를 k로 만들기

7(A), 8(연산 1), 9(연산 1), 18(연산 2), 19(연산 1), 38(연산 2), 76(연산 2), 77(연산 1)이 최소 연산이므로 정답은 7이다.

www.acmicpc.net


나의 코드

a, k = map(int, input().split())

dp = [0]*(k+1)

for i in range(a+1, k+1):
    dp[i] = dp[i-1]+1
    if i % 2 == 0 and i//2 >= a:
        dp[i] = min(dp[i], dp[i//2]+1)
print(dp[k])

 

결과


DP로 풀어보겠다고 꾸역꾸역 1시간 반을 고생했넼ㅋㅋㅋㅋㅋㅋㅋ 계속 안나왔던 이유는 i//2 >= a를 넣지 않아서였다. 그걸 넣으니 바로 해결! 그래도 DP로 푸는 법 이제는 조금 알 것 같다!