알고리즘/DP
백준 11053번 : 가장 긴 증가하는 부분 수열
Jason95
2021. 1. 29. 19:55
문제 링크 : www.acmicpc.net/problem/11053
내 풀이(2021.1.29.) :
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1000];
int dp[1000];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N; cin >> N;
for (int i = 0; i < N; i++) {
cin >> arr[i];
dp[i] = 1;
}
for (int i = 1; i < N; i++) {
for (int j = 0; j < i; j++) {
if (arr[i] > arr[j]) dp[i] = max(dp[i], dp[j] + 1);
}
}
int ma = 0;
for (int i = 0; i < N; i++) {
ma = max(dp[i], ma);
}
cout << ma;
return 0;
}
dp 배열의 모든 값들을 0이 아닌 1로 초기화 해야 했다. 초기값 설정에서 실수가 있었다.