๋ฐ์ํ
https://www.acmicpc.net/problem/1463
๋ฌธ์
์ ์ X์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง ์ด๋ค.
- X๊ฐ 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 3์ผ๋ก ๋๋๋ค.
- X๊ฐ 2๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 2๋ก ๋๋๋ค.
- 1์ ๋บ๋ค.
์ ์ N์ด ์ฃผ์ด์ก์ ๋, ์์ ๊ฐ์ ์ฐ์ฐ ์ธ ๊ฐ๋ฅผ ์ ์ ํ ์ฌ์ฉํด์ 1์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ฐ์ฐ์ ์ฌ์ฉํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 106๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n;
cin >> n;
vector<int> dp(n+1);
dp[1] = 0;
dp[2] = 1;
for(int i=2; i<=n; i++) {
vector<int> tmp;
if(i%3 == 0)
tmp.push_back(dp[i/3]);
if(i%2 == 0)
tmp.push_back(dp[i/2]);
tmp.push_back(dp[i-1]);
dp[i] = *min_element(tmp.begin(), tmp.end()) + 1;
}
cout << dp[n];
return 0;
}
/*
*/
๋ฐ์ํ
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 2491๋ฒ: ์์ด (0) | 2023.04.17 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 9625๋ฒ: BABBA (0) | 2023.04.13 |
[BOJ][C++] ๋ฐฑ์ค 1149๋ฒ: RGB๊ฑฐ๋ฆฌ (0) | 2023.01.30 |
[BOJ][C++] ๋ฐฑ์ค 2748๋ฒ: ํผ๋ณด๋์น ์ 2 (0) | 2023.01.30 |
[BOJ S1][C++] ๋ฐฑ์ค 2156๋ฒ: ํฌ๋์ฃผ ์์ (0) | 2022.09.30 |