문제
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int dp [] = new int [n+1];
dp[1] = 0;
for(int i=2;i<=n;i++) {
dp[i] = dp[i-1] + 1;
if(i % 2 == 0) {
dp[i] = Math.min(dp[i/2] + 1, dp[i]);
}
if(i % 3 == 0) {
dp[i] = Math.min( dp[i/3] + 1, dp[i]);
}
}
System.out.print(dp[n]);
}
}
문제
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
코드
import java.io.*; import java.util.*; class Main { public static void main(String args[]) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int dp [] = new int [n+1]; dp[1] = 0; for(int i=2;i<=n;i++) { dp[i] = dp[i-1] + 1; if(i % 2 == 0) { dp[i] = Math.min(dp[i/2] + 1, dp[i]); } if(i % 3 == 0) { dp[i] = Math.min( dp[i/3] + 1, dp[i]); } } System.out.print(dp[n]); } }