가장 큰 증가하는 부분 수열 - 11055
2025. 2. 13. 09:56ㆍPS/백준
문제
https://www.acmicpc.net/problem/11055
느낀점
증가하는 수열에서 각 인덱스까지의 최대합이 몇 인지 담으면 됨
풀이
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, answer = 0;
cin >> n;
vector<int> num_list(n);
/**
* dp문제를 풀 때, 수열을 어떻게 정의할 것인지 먼저 생각하기
* 이번 문제에서는 증가하는 수열에서 각 인덱스까지의 최대합이 몇 인지 구해야함
*/
vector<int> dp(n, 0);
for (int i = 0; i < n; i++)
{
cin >> num_list[i];
}
for (int i = 0; i < n; i++)
{
int maxValue = 0;
for (int j = 0; j < i; j++)
{
if (num_list[j] < num_list[i])
{
if (dp[j] > maxValue)
{
maxValue = dp[j];
}
}
}
dp[i] = maxValue + num_list[i];
}
for (int i = 0; i < n; i++)
{
if (dp[i] > answer)
{
answer = dp[i];
}
}
cout << answer;
return 0;
}
'PS > 백준' 카테고리의 다른 글
11899 - 괄호 끼워넣기 (0) | 2025.02.13 |
---|---|
단어 뒤집기 2 - 17413 (0) | 2025.02.13 |
점프 - 1890 (0) | 2025.02.13 |
주식 - 11501 (0) | 2025.02.13 |
한 줄로 서기 - 1138 (0) | 2025.02.12 |