728x90
11053번 문제와 정확하게 일치하는 LIS(Longest Increasing Subsequence) 문제이다.
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int* card = new int[n];
for (int i = 0; i < n; i++) {
cin >> card[i];
}
int* lis = new int[n];
lis[0] = 0;
int maxLength = 0;
for (int i = 0; i < n; i++) {
int longestLengthBeforeI = 0;
for (int j = 0; j < i; j++) {
if (card[i] > card[j]) {
if (lis[j] > longestLengthBeforeI)
longestLengthBeforeI = lis[j];
}
}
lis[i] = longestLengthBeforeI + 1;
if (lis[i] > maxLength)
maxLength = lis[i];
}
cout << maxLength << endl;
return 0;
}
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 4673번 셀프 넘버 (0) | 2020.01.30 |
---|---|
[백준] 11722번 가장 긴 감소하는 부분 수열 (0) | 2020.01.29 |
[백준] 14501번 퇴사 (0) | 2020.01.29 |
[백준] 1110번 더하기 사이클 (0) | 2020.01.29 |
[백준] 11053번 가장 긴 증가하는 부분 수열 (LIS) (0) | 2020.01.29 |