Post

Baekjoon11722-가장 긴 감소하는 부분 수열

Baekjoon11722-가장 긴 감소하는 부분 수열

백준 사이트 11722 - 가장 긴 감소하는 부분 수열 문제입니다.


1. 문제

https://www.acmicpc.net/problem/11722


2. Input , Output


3. 분류 및 난이도

일반적인 dp문제입니다. 백준에서는 Sliver2의 난이도를 책정하고 있습니다.


4. 생각한 것들

  • 입력크기가 그렇게 크지 않아 그리디한 접근법으로 풀었습니다.
    1. 각각의 인덱스에 대해 부분 수열을 찾고 갯수를 dp에 저장한 다음 수열 조건에 맞으면 dp를 인덱스의 값을 증가시킵니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<cmath>

using namespace std;

int arr[1001] = { 0, };
int dp[1001] = { 0, };

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n;
	int result = 0;
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		cin >> arr[i];
		
		for (int j = 1; j < i; ++j)
		{
			if (arr[j] > arr[i])
			{
				dp[i] = max(dp[i], (dp[j] + 1));
			}
		}
		result = max(dp[i], result);
		
	}
	cout << result+1;
	
	return 0;
}

6. 후기

비슷한 문제를 풀어서 빠르게 풀 수 있긴했다.

This post is licensed under CC BY 4.0 by the author.