Algorithm

DP / 백준 1463 1로 만들기

Dear-J 2025. 5. 16. 14:39

 

문제 접근

DP 알고리즘 : 이미 계산된 결과를 별도의 메모리 영역에 저장하여 다시 계산하지 않음으로서 수행 시간 단축

 

Top-Down(하향식)

하위 문제를 재귀적으로 호출하여 해결함으로서 상위 문제를 해결

>> 해결해놓은 하위 문제를 저장하기 위해 Memoization 사용

 

Bottom-UP(상향식)

하위에서부터 문제를 먼저 해결하고 얻어진 값들을 이요해서 상위 문제를 해결

>> 반복문을 사용해 구현하고 문제의 결과 값을 저장하는 리스트는 DP 테이블이라 부름

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class S1463 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        int[] dp = new int[N + 1];

        dp[1] = 0;

        for (int i = 2; i <= N; i++) {
            dp[i] = dp[i - 1] + 1;
            if (i % 2 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 2] + 1);
            }
            if (i % 3 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 3] + 1);
            }
        }
        System.out.println(dp[N]);
    }
}

 

Bottom Up 풀이

'Algorithm' 카테고리의 다른 글

DP / 백준 11727 2xn 타일링 2  (0) 2025.05.17
DP / 백준 11726 2xn 타일링  (0) 2025.05.16
수학 / 백준 17103 골드바흐 파티션  (0) 2025.05.15
수학 / 백준 2089 -2진수  (0) 2025.05.10
수학 / 백준 8진수 2진수 1212  (0) 2025.05.10