알고리즘 문제

[C/C++ 백준 1463번] 1로 만들기 (Silver 3)

새파란 공대생 2020. 8. 25. 22:24

https://www.acmicpc.net/problem/1463

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

간단한 dp문제이다.

#include <cstdio>
#include <algorithm>
using namespace std;
int X[1000001];
int main(void){
	int N;
	scanf("%d", &N);
	for(int i=1; i<=N; i++){
		if(i==1)
			X[i]=0;
		else{
			X[i]=X[i-1]+1;
			if(i%3==0)
				X[i]=min(X[i/3]+1, X[i]);
			if(i%2==0)
				X[i]=min(X[i/2]+1, X[i]);
		}
	}
	printf("%d",X[N]);
}