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