Algorithm/[BOJ]
[DP] 1463번 : 1로 만들기 (Java)
정보통신 고심이
2023. 11. 24. 13:39
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int dp[] = new int[x+1]; // 입력 받은 정수를 배열에 저장
dp[0] = dp[1] = 0; // 3) 초기값 정의 (0과 1을 1로 만들 수 없음)
for(int i=2; i<=x; 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[x]);
}
}
https://www.youtube.com/watch?v=5leTtB3PQu0
처음 작성 했던 코드
import java.util.*;
public class Main {
public static int DP(int x) {
if(x%3==0) return x/3;
if(x%2==0) return x/2;
else return x-=1;
return DP(x-1) + DP(x);
// 이미 계산된 결과를 저장하는 영역 필요
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int[] arr = new int[x];
sc.close();
System.out.println(DP(x));
}
}