녕의 학습 기록

백준_1463 1로 만들기 (DP) 본문

Algorithm/Algorithm 문제

백준_1463 1로 만들기 (DP)

kjyyjk 2024. 4. 11. 11:41

 

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

public class BJ_1463_1로만들기 {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        int[] d = new int[n+1];
        d[1] = 0;

        for (int i=2; i<n+1; i++) { //3가지 연산의 경우 중 최소값을 구해야한다
            d[i] = d[i-1] + 1;
            if (i%3 == 0) {
                d[i] = Math.min(d[i], d[i/3] + 1);
            }

            if (i%2 == 0) {
                d[i] = Math.min(d[i], d[i/2] + 1);
            }
        }

        System.out.println(new StringBuilder().append(d[n]));
    }

}
 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net