문제 링크 : https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
다이나믹 프로그래밍 문제입니다.
코드
#include<iostream>
#include<vector>
using namespace std;
int MAX = 1000002;
int main()
{
int N;
vector<int> Ncount(MAX, -1);
cin >> N;
Ncount[1] = 0;
for(int i = 1; i < N; i++){
if(i*3<N+1){
if((Ncount[i*3] == -1) || (Ncount[i]+1 < Ncount[i*3]))
Ncount[i*3] = Ncount[i] + 1;
}
if(i*2<N+1){
if((Ncount[i*2] == -1) || (Ncount[i]+1 < Ncount[i*2]))
Ncount[i*2] = Ncount[i] + 1;
}
if(i+1<N+1){
if((Ncount[i+1] == -1) || (Ncount[i]+1 < Ncount[i+1]))
Ncount[i+1] = Ncount[i] + 1;
}
}
cout << Ncount[N] << endl;
return 0;
}
'알고리즘 문제' 카테고리의 다른 글
[알고리즘 문제/C++]백준 1743번 : 음식물 피하기 (0) | 2021.01.10 |
---|---|
[알고리즘 문제/C++]백준 1700번 : 멀티탭 스케줄링 (0) | 2021.01.10 |
[알고리즘 문제/C++]백준 1449번 : 수리공 항승 (0) | 2021.01.10 |
[알고리즘 문제/C++]백준 1260번 : DFS와 BFS (0) | 2021.01.10 |
[알고리즘 문제/C++]백준 11047번 : 동전 0 (0) | 2021.01.10 |