본문 바로가기

분류 전체보기

(842)
[백준 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
[백준 17086번] 아기 상어 2 (C++) 문제링크 : https://www.acmicpc.net/problem/17086 #include using namespace std; int n, m, result = 0; queue q; int arr[52][52]; int dx[8] = { 0, 0, -1, 1, -1, -1, 1, 1 }; //1 좌, -1 우 int dy[8] = { -1, 1, 0, 0, -1, 1, -1, 1 }; //1 상, -1 하 void bfs() { while (!q.empty()) { int x = q.front().first, y = q.front().second; q.pop(); for (int i = 0; i < 8; i++) { int nx = x + dx[i]; //다음 x 좌표 int ny = y + dy..