Lewis's Tech Keep
[백준] 1로 만들기 -2 본문
참고 : 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