https://www.acmicpc.net/problem/11053
이 문제는 DP를 통해 해결할 수 있다.
문제의 점화식은 아래와 같다.
- 현재 검사하고하는 수 A가 배열에 저장된 수 B보다 클 경우
- 또한, 현재 배열에 저장된 수 B의 count가 최대 값이 아닌 경우 최대 값을 변경
- 현재 검사한 자리 수의 counter를 최대 값 + 1로 변경
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int dp[1001];
int T;
int N, M, K, H;
int X, Y;
int answer = 0;
int main() {
vector<int> v;
cin >> T;
for (int i = 0; i < T; i++) {
cin >> K;
v.push_back(K);
int dp_max = 0;
for (int j = 0; j < v.size(); j++) {
if (v[i] > v[j]) {
if (dp_max < dp[j])
dp_max = dp[j];
}
}
dp[i] = dp_max + 1;
answer = max(answer, dp[i]);
}
cout << answer << endl;
return 0;
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 3] 9095번 1, 2, 3 더하기 (0) | 2023.11.14 |
---|---|
[Gold 5] 12865번 평범한 배낭 (0) | 2023.11.13 |
[Silver 4] 1158번 요세푸스 문제 (0) | 2023.11.12 |
[Gold 5] 9251번 LCS (0) | 2023.11.09 |
[Silver 1] 11660번 구간 합 구하기 5 (0) | 2023.11.08 |