https://www.acmicpc.net/problem/1463
#include <iostream>
#define MAX 1000001;
using namespace std;
int dp[1000001] = { 0,0,1,1 };
int main() {
int N; cin >> N;
for (int i = 4; i <= N; i++) {
int three, two, one = dp[i-1]+1;
three = (i % 3 == 0) ? dp[i / 3] +1 : MAX;
two = (i % 2 == 0) ? dp[i / 2]+1 : MAX;
dp[i] = min(three, min(two, one));
}
cout << dp[N] << endl;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 백준 "2606) 바이러스" (0) | 2022.06.06 |
---|---|
(c++) 백준 "2579) 계단 오르기" (0) | 2022.06.06 |
(c++) 프로그래머스 "징검다리(level-4)" (0) | 2022.06.06 |
(c++) 프로그래머스 "불량사업자 (level-3)" (0) | 2022.06.06 |
(c++) 백준 "17626)Four Squares" (0) | 2022.06.05 |