반응형
문제링크:https://www.acmicpc.net/problem/11722
전형적인 LIS 문제였습니다.
LIS 개념을 아신다면 어렵지 않은 문제였습니다.
그나마 주의해야 할 점은 이전 dp값을 전부 확인해봐야한다는 것입니다.
바로 이전의 자신보다 큰값만 비교할 경우 예외가 발생합니다.
Ex) 5
10 5 4 6 3
정답코드입니다. 화이팅 :)
#include <iostream>
using namespace std;
int dp[1001] = { 0 };
int arr[1001] = { 0 };
int n,num,result =0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int maxed = 0;
cin >> arr[i];
for (int j = 0; j < i; j++) {
if (arr[i] < arr[j] && maxed < dp[j])
maxed = dp[j];
}
dp[i] = maxed + 1;
}
for (int i = 0; i < n; i++) {
if (result < dp[i]) result = dp[i];
}
cout << result << endl;
}
반응형
'알고리즘 > DP' 카테고리의 다른 글
[백준] 11051-이항계수2 (0) | 2020.03.26 |
---|---|
[백준] 2225-합분해(C++) (0) | 2020.03.21 |
[백준] 2352-반도체 설계(C++) (0) | 2020.03.02 |
[백준] 11055-가장 큰 증가 부분 수열 (0) | 2020.02.01 |
[백준] 9461-파도반 수열 (0) | 2020.02.01 |