- toc {:toc}
νμ΄
O(N^2) μ λ°©μμΌλ‘ νμ΄νλ€. for λ¬Έμ λ λ² μ¬μ©νλ€.
νκΉκ° arr[i] λ₯Ό μ€μ ν΄μ i μ΄μ μ κ°λ€ arr[j] κ³Ό λΉκ΅νλ€. λ§μ½ νκ²κ°μ΄ λ ν¬λ€λ©΄ μ¦κ°νλ μμ΄μ΄ λ§λ€μ΄μ§ μν©μ΄λ€. μ¦, dp[j]μμ 1μ λν΄ dp[i]μ μ μ₯νμ¬ κ°±μ ν΄μ€μΌ νλ€. νμ§λ§ dp[i] κ° μ΄λ―Έ λ§λ€μ΄μ Έ μλ μν©μ΄λΌλ©΄ dp[j]+1κ³Ό dp[i]λ₯Ό λΉκ΅ν΄ μ΅λ μμ΄μ κ°±μ νλ€.
#include <bits/stdc++.h>
using namespace std;
int arr[1004], dp[1004];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n, res = 0;
cin >> n;
for(int i = 0; i < n; i++){
cin >> arr[i];
}
fill(dp, dp+n, 1);
for(int i = 0; i < n; i++){
for(int j = 0; j < i; j++){
if(arr[j] < arr[i]) dp[i] = max(dp[i], dp[j]+1);
}
}
for(int i = 0; i < n; i++){
if (res < dp[i]) res = dp[i];
}
cout << res << '\n';
return 0;
}