문제 링크 : https://www.acmicpc.net/problem/3745
각 테스트케이스마다 LIS의 길이를 구하는 문제이다.
LIS 알고리즘 : https://junstory314.tistory.com/entry/Computer-Algorithms-LIS-Longest-Increasing-Sequence-%EC%B5%9C%EC%9E%A5-%EC%A6%9D%EA%B0%80-%EC%88%98%EC%97%B4
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <map>
#include <algorithm>
#include <stack>
#include <set>
#include <cmath>
#include <climits>
#define endl '\n'
using namespace std;
int N;
vector<int> p;
vector<int> lis;
void input()
{
if (!(cin >> N))
exit(0);
p.resize(N);
lis.resize(0);
for (int i = 0; i < N; i++)
{
cin >> p[i];
}
}
void solution()
{
for (int i = 0; i < N; i++)
{
auto pos = lower_bound(lis.begin(), lis.end(), p[i]);
if (pos == lis.end())
{
lis.push_back(p[i]);
}
else
{
*pos = p[i];
}
}
}
void output()
{
cout << lis.size() << endl;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
while (true)
{
input();
solution();
output();
}
return 0;
}
728x90
'Problem Solving' 카테고리의 다른 글
[Problem Solving] BOJ 9084 : 동전 (0) | 2025.02.19 |
---|---|
[Problem Solving] BOJ 14719 : 빗물 (0) | 2025.02.17 |
[Problem Solving] BOJ 12891 : DNA 비밀번호 (0) | 2025.02.15 |
[Problem Solving] BOJ 1092 : 배 (0) | 2025.02.15 |
[Problem Solving] BOJ 10451 : 순열 사이클 (0) | 2025.02.14 |