코딩하는 해맑은 거북이

[Python] 숫자 변환하기 - 프로그래머스 (DP) 본문

코딩테스트

[Python] 숫자 변환하기 - 프로그래머스 (DP)

#CJE 2023. 2. 7.
해당 글은 프로그래머스 문제 '숫자 변환하기'를 다룬다.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/154538

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

설명

해당 문제는 DP문제로 간단하게 해결할 수 있다.

x에서 y까지 for문을 돌면서 dp 테이블을 최소값으로 유지하여 업데이트 시켜준다.

 

코드

def solution(x, y, n):
    answer = -1
    dp = [1000001]*1000001
    dp[x] = 0
    for i in range(x, y+1):
        if i+n <= y:
            dp[i+n]=min(dp[i+n], dp[i]+1)
        if i*2 <= y:
            dp[i*2]=min(dp[i*2], dp[i]+1)
        if i*3 <= y:
            dp[i*3]=min(dp[i*3], dp[i]+1)
            
    if dp[y] != 1000001:
        answer = dp[y]
    return answer

     

 

 

Comments