#include<iostream>
#include<vector>
#include<algorithm>
#define MAX 101
typedef unsigned int integer;
using namespace std;
int main()
{
integer N;
cin >> N;
vector<pair<integer, integer>> arr;
integer temp1, temp2;
for (int i = 0; i < N; ++i)
{
cin >> temp1 >> temp2;
arr.push_back(make_pair(temp1, temp2));
}
sort(arr.begin(), arr.end());
integer dp[MAX];
integer max = 1;
for (integer i = 0; i < N; ++i)
{
dp[i] = 1;
for (integer j = 0; j < i; ++j)
{
if (arr[j].second < arr[i].second)
{
dp[i] = dp[j] + 1 < dp[i] ? dp[i] : dp[j] + 1;
max = max < dp[i] ? dp[i] : max;
}
}
}
cout << N - max;
return 0;
}
||사용 기법
- LIS
- DP
||풀면서 느낀 것
- 다양한 사고를 안했음
LIS를 공부하는 중에 LIS이용하는 것을 알고 풀이에 들어갔음에도 응용하지 못했다 ㅠ
좀 더 다양한 사고를 해야한다.
'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글
[백준 - 24445] 너비 우선 탐색 2 (0) | 2022.08.06 |
---|---|
[백준 - 106953] A → B (0) | 2022.08.03 |
[백준 - 1260] DFS와 BFS (0) | 2022.08.02 |
[백준 - 1202] 보석 도둑 (0) | 2022.08.01 |
[백준 - 9012] 괄호 (0) | 2022.07.31 |