본문 바로가기
PS/Baekjoon

[Baekjoon] 1463 - 1로 만들기

by 서현 SEOHYEON 2023. 7. 20.

📝 문제

 

 

🔑 풀이 과정

· 다이나믹 프로그래밍 문제. 처음에는 이게 왜 DP인가 싶었긴 한데... 이건 그냥 내가 문제를 많이 안풀어봐서 그런듯.

표를 그려서 계산하다보면 점화식이 나온다. 그리고 이건 바텀-업 방식

 

· 풀이 과정

파란색 음영 들어간 부분이 최솟값을 의미

 

 

🔓 답안

import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        int[] D = new int[N+1]; //DP 배열 생성

        //DP 배열 채우기
        D[1] = 0;

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

        //출력
        bw.write(D[N] + "\n");
        bw.flush();
        bw.close();
    }

}

 

 

 

🖤 알고리즘 분류

- 다이나믹 프로그래밍

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 1003 - 피보나치 함수  (0) 2023.07.22
[Baekjoon] 9095 - 1, 2, 3 더하기  (0) 2023.07.21
[Baekjoon] 1302 - 베스트셀러  (0) 2023.07.19
[Baekjoon] 1269 - 대칭 차집합  (0) 2023.07.18
[Baekjoon] 7785 - 회사에 있는 사람  (0) 2023.07.17

댓글