Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
알고스팟 _ LIS, 백준 12015번 _가장 긴 증가하는 부분 수열 2 본문
https://www.algospot.com/judge/problem/read/LIS
O(n^2) 풀이
반복문 풀이
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int dp[501];
int arr[501];
void Input()
{
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
}
void solve()
{
int maxValue = 1;
for (int i = 0; i < N; i++)
{
int value = arr[i];
dp[i] = 1;
for (int j = i; j >= 0; j--)
{
if (value > arr[j])
dp[i] = max(dp[i], dp[j] + 1);
}
maxValue = max(maxValue, dp[i]);
}
cout << maxValue << '\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int testcase;
cin >> testcase;
for (int i = 0; i < testcase; i++)
{
Input();
solve();
}
return 0;
}
재귀방식 풀이
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int dp[501];
int arr[501];
void dpInit()
{
for (int i = 0; i < N; i++)
dp[i] = -1;
}
void Input()
{
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
}
int solve(int start)
{
int& ret = dp[start];
if (ret != -1) return ret;
ret = 1;
for (int next = start + 1; next < N; next++)
if(arr[start] < arr[next])
ret = max(ret, solve(next) + 1);
return ret;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int testcase;
cin >> testcase;
for (int i = 0; i < testcase; i++)
{
Input();
dpInit();
int maxValue = 0;
for (int j = 0; j < N; j++)
maxValue = max(maxValue, solve(j));
cout << maxValue << '\n';
}
return 0;
}
O(nlogn) 풀이
이 문제는 백준 문제임.
https://www.acmicpc.net/problem/12015
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n; // 벡터의 길이
vector <int> arr_a;
int main()
{
cin >> n;
arr_a.push_back(0);
int tmp = 0;
for (int i = 0; i < n; i++)
{
cin >> tmp;
if (arr_a.back() < tmp)
{
arr_a.push_back(tmp);
}
else
{
int index = lower_bound(arr_a.begin(), arr_a.end(), tmp) - arr_a.begin();
arr_a[index] = tmp;
}
}
cout << arr_a.size() - 1;
return 0;
}
후기
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
백준 2294번 _ 동전 2 (0) | 2020.05.09 |
---|---|
백준 9465번 _ 스티커 (0) | 2020.05.09 |
알고스팟 _ 삼각형 위의 최대 경로 (0) | 2020.05.08 |
codeforces _ 230B _ B. T-primes (0) | 2020.05.07 |
백준 1700번 _ 멀티탭 스케줄링 (0) | 2020.05.07 |
Comments