HyeLog
백준_11722_가장 긴 감소하는 부분 수열 본문
백준 11055번(가장 큰 증가 부분 수열) 과 유사한 다이나믹 프로그래밍(dp) 문제였다. i번까지의 수열의 최대 길이인 d[i]를 1로 초기화하고, 이전 값들과 모두 비교해서 갱신하는 방식으로 풀었다.
#include <iostream>
#include <algorithm>
#define MAX 1001
using namespace std;
int N, A[MAX], d[MAX], answer;
void dp() {
int maxD = 0;
for (int i = 1; i <= N; i++) {
d[i] = 1;
for (int j = 1; j < i; j++) {
if (A[i] < A[j] && d[i] < d[j] + 1) {
d[i] = d[j] + 1;
}
}
maxD = max(maxD, d[i]);
}
answer = maxD;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> A[i];
}
dp();
cout << answer << '\n';
return 0;
}
'알고리즘' 카테고리의 다른 글
백준_16935_배열 돌리기 3 (0) | 2022.02.15 |
---|---|
백준_16926_배열 돌리기 1 (0) | 2022.02.15 |
백준_11055_가장 큰 증가 부분 수열 (0) | 2022.02.07 |
백준_1932_정수 삼각형 (0) | 2022.02.07 |
백준_2156_포도주 시식 (0) | 2022.02.06 |