코드
#include <iostream>
using namespace std;
int n, a[1003], cnt[1003],res;
int main() {
cin >> n;
fill(cnt, cnt + 1003, 1);
for(int i = 0; i < n; i++) {
cin >> a[i];
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < i; j++) {
if(a[j] < a[i] && cnt[i] < cnt[j] + 1) {
cnt[i] = cnt[j] + 1;
}
}
res = max(res, cnt[i]);
}
cout << res << '\n';
return 0;
}
O(N^2)으로 가장 긴 증가하는 부분 수열(LIS, longest increasing subsequence)를 구하는 문제.
'백준' 카테고리의 다른 글
[백준] 9184번 신나는 함수 실행 C++ 코드 (0) | 2024.07.15 |
---|---|
[백준] 12015번 가장 긴 증가하는 부분 수열 2 C++ 코드 (0) | 2024.07.08 |
[백준] 3079번 입국심사 C++ 코드 (0) | 2024.07.02 |
[백준] 17406번 배열 돌리기 4 C++ 코드 (1) | 2024.06.14 |
[백준] 14888번 연산자 끼워넣기 C++ 코드 (1) | 2024.06.14 |