백준 11055 가장 긴 부분 수열

CJB_ny·2022년 12월 23일
0

백준

목록 보기
13/104
post-thumbnail

먼저 백준

boj.kr/11053
이거부터 풀는거 추천함.

분석

11053이랑 다 비슷하다고 했고 나도 비슷하다 느꼇지만 결국 풀지는 못하고 해설을 보고 이해를 함...

다른사람들 코드는 이해가 안갔지만

https://velog.io/@matcha_/%EB%B0%B1%EC%A4%80-11055-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%A6%9D%EA%B0%80-%EB%B6%80%EB%B6%84-%EC%88%98%EC%97%B4-C-DP

여기에서 max를 사용해서 최대값 갱신하는 부분은 이해가 잘되서 이 방법으로 구현을 함..

배운부분

cache[i] = max(cache[i], cache[j] + arr[i]);

이 max를 통해 cache = 에다가 넣는 부분을 통해서 최대값을 갱신하는 부분을 조금 알거같다..??

cpp 코드

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

#define MAX 1001
#define endl "\n"

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

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

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

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

	sort(cache, cache + n + 1);

	cout << cache[n];

	return 0;
}
profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글