n^2의 시간복잡도를 갖는 코드.
C++
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int n;
vector<int> arr;
vector<int> dp;
bool comp;
int solution() {
for(int i=0; i<n; i++){
for(int j=0; j<i; j++){
if(arr[i]> arr[j]){
dp[i] = max(dp[i], dp[j]+1);
}
}
}
sort(dp.begin(), dp.end());
return dp[n-1];
}
int main(){
scanf("%d", &n);
int element;
for(int i=0; i<n; i++){
cin >> element;
arr.push_back(element);
dp.push_back(1);
}
printf("%d\n", solution());
}
python
x = int(input())
arr = list(map(int, input().split())) #input을 slice해서 list에 담기
dp = [1 for i in range(x)] # dp 배열 생성
for i in range(x):
for j in range(i):
if arr[i] > arr[j]:
dp[i] = max(dp[i], dp[j]+1)
print(max(dp))
'알고리즘 > 백준' 카테고리의 다른 글
[C++/1932] 정수 삼각형 (0) | 2021.09.05 |
---|---|
[11650/C++] 좌표 정렬하기 (0) | 2021.08.22 |