하루살이 개발자

[프로그래머스] Lv2. 숫자 변환하기(by Python) 본문

코딩테스트

[프로그래머스] Lv2. 숫자 변환하기(by Python)

하루살이 2023. 5. 25. 16:11

문제

코딩테스트 연습 - 숫자 변환하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

풀이

  • 많이 나오는 유형의 DP문제이다.
  • dp리스트를 최댓값으로 초기화하고, x에 3가지 옵션(n더하기, 2곱하기, 3곱하기)를 하면서 해당 dp값을 최솟값으로 갱신시켜주면 된다.

 

코드

def solution(x, y, n):
    answer = 0
    li = []
    dp = [1e9 for _ in range(y+1)]
    
    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] == 1e9:
        return -1
    else:
        return dp[y]