728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/154538?language=cpp
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2
dfs๋ก๋ ์ฝ๊ฒ ํ ์ ์์ง๋ง, ํจ์จ์ฑ ๋๋ฌธ์ dp๋ก ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค.
์ด์ ๊ฐ์ผ๋ก๋ถํฐ ํ์ฌ๊ฐ์ผ๋ก ๊ณ์ฐ์ด ๊ฐ๋ฅํ ๊ฐ์ธ์ง ํ์ธ ํ, ์ฐ์ฐํด์ผ ํ๋ค.
๋์ ํ์ด
#include <string>
#include <vector>
#include <climits>
using namespace std;
int solution(int x, int y, int n) {
vector<int> dp(y + 1, INT_MAX);
dp[x] = 0;
for(int i=x+1; i<=y; ++i){
if (i - n >= x && dp[i - n] != INT_MAX)
dp[i] = min(dp[i], dp[i - n] + 1);
if (i % 2 == 0 && i / 2 >= x && dp[i / 2] != INT_MAX)
dp[i] = min(dp[i], dp[i / 2] + 1);
if (i % 3 == 0 && i / 3 >= x && dp[i / 3] != INT_MAX)
dp[i] = min(dp[i], dp[i / 3] + 1);
}
if(dp[y]==INT_MAX) return -1;
return dp[y];
}
728x90
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.3 : ์๋ฌผ์ ์ ์ด์ (2020 KAKAO) (0) | 2025.06.05 |
---|---|
[C++/PGS] Lv.1 : ํ๋ฐฐ ์์ ๊บผ๋ด๊ธฐ (0) | 2025.06.04 |
[C++/PGS] Lv.3 : ํฉ์น ํ์ ์๊ธ (BFS/๋ค์ต์คํธ๋ผ) (0) | 2025.05.24 |
[C++/PGS] Lv.2 : ๋ชจ์์ฌ์ (0) | 2025.05.24 |
[C++/PGS] Lv.1 : ๊ฐ์ ์ซ์๋ ์ซ์ด (Stack) (0) | 2025.05.24 |