Lewis's Tech Keep

[백준] 1로 만들기 -2 본문

Java/알고리즘

[백준] 1로 만들기 -2

Lewis Seo 2021. 3. 6. 21:42

참고 : www.acmicpc.net/problem/12852

 

- dp & 추적 

- 이전 값의 주소를 저장하는 것이 포인트

 

더보기
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] dp = new int[n+1];
        int[] pre = new int[n+1];
        dp[1] = 0;
        for(int i=2; i<=n;i++) {
            dp[i] = dp[i-1] + 1;
            pre[i] = i-1;
            if(i % 2 == 0 && dp[i] > dp[i/2] + 1) {
                dp[i] =  dp[i/2] + 1;
                pre[i] = i/2;
            }
            if(i % 3 == 0 && dp[i] > dp[i/3] + 1) {
                dp[i] =  dp[i/3] + 1;
                pre[i] = i/3;
            }
        }
        int t = 0;
        int val = n;
        System.out.println(dp[n]);
        while(t <= dp[n]) {
            System.out.print(val + " ");
            val = pre[val];
            t++;
        }
    }
}

'Java > 알고리즘' 카테고리의 다른 글

[백준] N-Queen  (0) 2021.03.07
[백준] N과 M  (0) 2021.03.07
[백준] 구간 합 구하기 4  (0) 2021.03.06
[백준] RGB 거리  (0) 2021.03.06
[백준] 계단 오르기  (0) 2021.03.05
Comments