반응형
LIS 알고리즘을 사용하면 간단하게 해결할 수 있다.
#include <iostream>
using namespace std;
int a[1000], length[1000], n;
void dpFunc() {
int res=0;
for(int i=0; i<n; i++) {
length[i]=1;
for(int j=0; j<i; j++)
if(a[i]>a[j]) length[i]=max(length[i], length[j]+1);
if(length[i]>res) res=length[i];
}
cout << res;
}
int main(void) {
cin >> n;
for(int i=0; i<n; i++) cin >> a[i];
dpFunc();
return 0;
}
'PS' 카테고리의 다른 글
[PS] 백준 15966번 - 군계일학 (0) | 2023.05.22 |
---|---|
[PS] 백준 1003번 - 피보나치 함수 (0) | 2023.05.21 |
[PS] 백준 9095번 - 1, 2, 3 더하기 (0) | 2023.05.18 |
[PS] 백준 1463번 - 1로 만들기 (0) | 2023.05.17 |
[PS] 백준 2629번 - 양팔저울 (0) | 2023.05.17 |