오늘의 알고리즘
[C++] 백준 11053 가장 긴 증가하는 부분 수열
하늘하늘 .
2022. 10. 21. 21:41
#include <iostream>
int arr[1001] = {};
int DP[1001] = {};
int main()
{
int N = 0;
std::cin >> N;
for (int i = 0; i < N; ++i)
{
std::cin >> arr[i];
}
int iMax = 0;
for (int i = 0; i < N; ++i)
{
DP[i] = 1;
for (int j = 0; j < i; ++j)
{
if (arr[i] > arr[j])
{
DP[i] = std::max(DP[i], DP[j] + 1);
}
}
iMax = std::max(iMax, DP[i]);
}
std::cout << iMax;
return 0;
}
여기서 가장 중요한 것은... 수열이 꼭 등차수열만을 얘기하는 게 아니라는 겁니다.
전 항상 수열을 생각하면 등차수열이라고 생각해서 어떻게 했을까... 했는데...
그냥 단지 수가 이어지는 것, 또한 수열이라 부르는 것입니다.
그렇기 때문에 가장 긴 증가하는 수열은 수가 증가만 하면 됩니다.