백준 11722 C++ #include using namespace std;int n, num, len = 0;int nums[1005];pair tempMax; // 지금까지의 최대 stack, int dp[1005];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i > nums[i]; } for (int i = 0; i 이번 DP는 따로 점화식은 필요없이 떠오르는 대로 하면 풀릴 문제였다. 2025. 3. 14. 백준 11726 C++ 이 DP의 점화식은 dp[i] = (dp[i-1] + dp[i-2]) % 10007이다. 점화식의 이유는dp[i]는 dp[i-1]에서 2x1짜리가 하나 더해졌을 뿐이다. 그리고dp[i-2]에서 1x2짜리 2개가 더해져서 만들어진 것이다. 10007의 이유는 문제에서 요구한 사항이기 때문이다. #include typedef long long ll;using namespace std;int n; //2xn 크기의 타일이 주어진다. 1> n; //dp[1] = 1; //dp[2] = 2; //for (int i = 3; i 2025. 3. 5. 백준 2579 C++ 이차원 배열로 이전 걸 밟았는지 아닌지 판단하여 넣을 수 있다면 쉽게 풀 수 있는 문제였다.연습용이라서 bottom up이랑 top down 둘 다 해봤다.#include using namespace std;//연속된 세 개의 계단을 밟아선 안된다.//계단은 한개 또는 두개씩 오를 수 있다.int n;int stairs[310];int dp[310][2]; //stairs 최대값, 0 = 이전걸 밟지 않음. 1 = 이전걸 밟았다.int go(int num, int before){ int& ret = dp[num][before]; //num이라는 stairs에서 이전의 밟았는지 아닌지 if (ret != 0) return ret; //이미 값이 존재한다면 그냥 return; if (before == .. 2025. 3. 5. 백준 2748 C++ 호기롭게 DP를 외판원 순회로 풀어보고 벽을 느끼고다른 문제로 다시 갔을 때 기초가 없는 것 같아서 아예 브론즈 문제부터 풀려고 한다. 가장 기초인 피보나치 수열 문제이다.#include using namespace std;int n;long long dp[100];int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; dp[0] = 0; dp[1] = 1; dp[2] = 1; for (int i = 3; i #include using namespace std;int n;long long dp[100];long long fibo(int num){ if (num == 1 || num == 2) { return 1; } i.. 2025. 3. 4. 이전 1 2 3 4 5 6 ··· 23 다음