https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
#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 |