1로 만들기(1463)
메모이제이션으로 N을 1로 바꾸기 위해 주어진 연산을 몇 번 사용하는지 계산하는 문제
Last updated
메모이제이션으로 N을 1로 바꾸기 위해 주어진 연산을 몇 번 사용하는지 계산하는 문제
Last updated
1103import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int dp[] = new int[N+1];
//식은 기본적으로 2개가 있어야 하나가 있게되니까 0과 1은 0으로 초기화
dp[0] = 0;
dp[1] = 0;
for(int i=2; i<=N; i++){
//계산식을 보면 N개의 항목이 있을때는 수식은 N-1개가 되기 때문에 dp에 수식의 갯수를 저장
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[N]);
}
}