728x90
반응형
11053 가장 긴 증가하는 부분 수열
문제풀이
#include <iostream>
#include <algorithm>
using namespace std;
void fast_io(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int arr[1001], dp[1001], a;
int main()
{
fast_io();
cin >> a;
for (int i = 0; i < a; i++)
cin >> arr[i];
for (int i = 0; i < a; i++)
{
dp[i] = 1;
for (int j = 0; j < i; j++)
if (arr[i] > arr[j])
dp[i] = max(dp[i], dp[j] + 1);
}
cout << *max_element(dp, dp + a);
}
lis알고리즘을 쓸 일이 생겨서 풀어봤다.
Longest Increasing Subsequence 는 최장 증가 부분 수열이라는 알고리즘이다.
계속 틀렸는데 어이없는 실수를 했다.
i보다 작은 원소를 찾고, 작은원소의 dp값 + 1과 i의 dp값을 비교한뒤 최장길이인 dp값을 보여준다.
728x90
반응형
'자라는 개발자 > 문제풀이' 카테고리의 다른 글
백준 c++ 5585 거스름돈 (0) | 2022.04.17 |
---|---|
백준 c++ 11055 가장 큰 증가 부분 수열 (0) | 2022.04.10 |
백준 c++ 14582 오늘도 졌다 (0) | 2022.04.04 |
백준 c++ 24912 카드 색칠 (0) | 2022.04.03 |
백준 c++ 2630 색종이 만들기 (0) | 2022.03.31 |