728x90
https://www.acmicpc.net/problem/2631
LIS(Longest Increasing Sequence)를 구하고 N에서 LIS를 빼주면 된다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
cin.tie(NULL);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
vector<int> dp(n);
dp[0] = 1;
int lis = 0;
for (int i = 1; i < n; i++) {
int maxDp = 0;
for (int j = 0; j < i; j++) {
if (dp[j] > maxDp && v[j] < v[i]) {
maxDp = dp[j];
}
}
dp[i] = maxDp + 1;
if (dp[i] > lis)
lis = dp[i];
}
cout << n - lis;
return 0;
}
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 2225 합분해 (0) | 2020.03.16 |
---|---|
[백준] 2096번 내려가기 (0) | 2020.03.15 |
[백준] 9084번 동전 (0) | 2020.03.14 |
[백준] 1937번 욕심쟁이 판다 (0) | 2020.03.14 |
[백준] 3036번 링 (0) | 2020.03.13 |