반응형
<코드>
#include <iostream>
#include <algorithm>
using namespace std;
int before[1000001];
int dp[1000001];
int solve(int N)
{
dp[1] = 0;
for (int i = 2; i <= N; i++)
{
// 3번 연산
dp[i] = dp[i - 1] + 1;
before[i] = i - 1;
// 1번 연산
if (i % 3 == 0)
{
if (dp[i] > dp[i / 3] + 1)
{
dp[i] = dp[i / 3] + 1;
before[i] = i / 3;
}
}
// 2번 연산
if (i % 2 == 0)
{
if (dp[i] > dp[i / 2] + 1)
{
dp[i] = dp[i / 2] + 1;
before[i] = i / 2;
}
}
}
return dp[N];
}
int main(void)
{
int X;
cin >> X;
cout << solve(X) << '\n';
while (true)
{
cout << X << " ";
X = before[X];
if (X == 0) break;
}
return 0;
}
<비슷한 문제>
[C/C++] 백준 1463번 - 1로 만들기
<코드> #include #include using namespace std; int dp[1000001]; int solve(int N) { dp[1] = 0; for (int i = 2; i <= N; i++) { // 3번 연산 dp[i] = dp[i - 1] + 1; // 1번 연산 if (i % 3 == 0) { if (dp[i..
cocoon1787.tistory.com
12852번: 1로 만들기 2
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.
www.acmicpc.net
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 12738번 - 가장 긴 증가하는 부분 수열 3 (LIS) (0) | 2021.03.04 |
---|---|
[C/C++] 백준 14002번 - 가장 긴 증가하는 부분 수열 4 (LIS) (0) | 2021.03.04 |
[C/C++] 백준 1463번 - 1로 만들기 (0) | 2021.03.03 |
[C/C++] 백준 1956번 - 운동 (플로이드 와샬) (0) | 2021.03.03 |
[프로그래머스] - 위장 (해시) (0) | 2021.03.03 |