본문 바로가기

백준/실버

(285)
[백준 14501번] 퇴사 (C++) 문제링크 : https://www.acmicpc.net/problem/14501 #include using namespace std; int n; int t[16], p[16], dp[16] = {0}; int result = 0, sum = 0; int main() { cin >> n; for(int i=1; i> t[i] >> p[i]; //기간과 금액 입력 for (int j = 0; j < i; j++) //상담 기간이 현재 i보다 작은 것 찾기 { if (t[j] + j
[백준 11048번] 이동하기 (C++) 문제링크 : https://www.acmicpc.net/problem/11048 #include using namespace std; int n, m; int dp[1001][1001]; int arr[1001][1001]; int main() { cin >> n >> m; for (int i = 1; i arr[i][j]; dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + arr[i][j]; //3가지 이동 방법으로 온 값중 가장 큰 값을 저장 } } cout
[백준 11722번] 가장 긴 감소하는 부분 수열 (C++) 문제링크 : https://www.acmicpc.net/problem/11722 #include using namespace std; int n; int dp[1001]; int arr[1001]; int main() { cin >> n; for (int i = 1; i > arr[i]; dp[i] = 1; //가장 짧은 길이가 1이므로 1로 초기화 } for (int i = 1; i
[백준 11055번] 가장 큰 증가 부분 수열 (C++) 문제링크 : https://www.acmicpc.net/problem/11055 #include using namespace std; int n; int dp[1001]; int arr[1001]; int main() { cin >> n; for (int i = 1; i > arr[i]; dp[i] = arr[i]; } for (int i = 1; i arr[j]) //arr[1 ~ i-1]까지 값 중에 arr[i]보다 작은 값이 있는지 확인 { dp[i] = max(dp[i], dp[j] + arr[i]); //dp 값을 현재 값과 조건을 만족하는 그전의 값의 합으로 갱신 } } } sort(dp, dp + 1001); cout
[백준 9625번] BABBA (C++) 문제링크 : https://www.acmicpc.net/problem/9625 #include using namespace std; int n; int dpA[46]; int dpB[46]; int main() { dpA[0] = 0, dpA[1] = 1; dpB[0] = 1; dpB[1] = 1; cin >> n; for (int i = 2; i < n; i++) { dpA[i] = dpA[i - 1] + dpA[i - 2]; //규칙을 살펴보면 피보나치 수열을 따름 dpB[i] = dpB[i - 1] + dpB[i - 2]; } cout
[백준 16935번] 파스칼의 삼각형 (C++) 문제링크 : https://www.acmicpc.net/problem/16395 #include using namespace std; int n, k; int dp[31][31]; int main() { cin >> n >> k;; for (int i = 1; i
[백준 2491번] 수열 (C++) 문제링크 : https://www.acmicpc.net/problem/2491 #include using namespace std; int n, k, result = 0; int arr[100001], dp[100001], dp2[100001]; int main() { cin >> n; for (int i = 0; i > arr[i]; dp[i] = dp2[i] = 1; } for (int i = 1; i = arr[i-1]) //값이 연속해서 커지는 경우 { dp[i] = max(dp[i], dp[i - 1] + 1); } if (arr[i]
[백준 15990번] 1, 2, 3 더하기 5 (C++) 문제링크 : https://www.acmicpc.net/problem/15990 #include using namespace std; #define Mod 1000000009; //나눠야 할 값 정의 int t, n; long long dp[100001][4], result; int main() { cin >> t; dp[1][1] = dp[2][2] = dp[3][1] = dp[3][2] = dp[3][3] = 1; //초기값 while (t--) { cin >> n; for (int i = 4; i