백준 11053 가장 긴 부분 수열

CJB_ny·2022년 12월 21일
0

백준

목록 보기
12/104
post-thumbnail

분석

머리 터질뻔함..

1시간 넘겼기 때문에 AC보면서 이해할려고해도 많이 어려웠음메...

DP의 기초 문제를 풀고있지만 왜 DP가 제일 어렵다는지 알겠음...ㅠ

(머리 깨질뻔함)

아직 좆밥인것을 인정을 하고 하나하나 그려보면서 이해를 할 수 있도록 하자...

이런식으로 다 적어가면서 아래코드를 이해하도록 하자.

for (int i = 1; i < n + 1; ++i)
{
	cache[i] = 1;

	for (int j = 1; j < i + 1; ++j)
	{
		if (arr[i] > arr[j])
			cache[i] = max(cache[i], cache[j] + 1);
	}

	l = max(l, cache[i]);
}

코드 cpp

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

#define MAX 1001
#define endl "\n"

int cache[MAX];
int arr[MAX];

int main()
{	
	memset(cache, 0, sizeof(cache));

	int n;
	cin >> n;

	int l = 0;

	for (int i = 1; i < n + 1; ++i)
		cin >> arr[i];

	for (int i = 1; i < n + 1; ++i)
	{
		cache[i] = 1;

		for (int j = 1; j < i + 1; ++j)
		{
			if (arr[i] > arr[j])
			    cache[i] = max(cache[i], cache[j] + 1);
		}

		l = max(l, cache[i]);
    }
	cout << l << endl;
    
	return 0;
}
profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글