티스토리 뷰

 


[BOJ 11055(S2) 리뷰]

먼저 이 문제를 풀기전에 LIS알고리즘 의 개념에 대해 알고 있어야 한다.

동적계획법을 통해 문제를 해결 할 수 있으며 기존에 크기에 대하여 계산하던 것을 합에 대하여 계산하도록만 바꾸어주면 된다.


#include <bits/stdc++.h>
using namespace std;

int arr[1001];
int dp[1001];

int main(void)
{
	int N;
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
		dp[i] = arr[i];
	}

	int ans = 0;
	for (int i = 0; i < N; i++)
	{
		int temp=0;
		for (int j = 0; j < i; j++)
		{
			if (arr[i] > arr[j])
			{
				temp = max(temp, dp[i] + dp[j]);
			}
		}
		dp[i] = max(dp[i], temp);
		ans = max(ans, dp[i]);
	}

	cout << ans;

	

}

'알고리즘 풀이 > 동적계획법' 카테고리의 다른 글

BOJ : 1520 내리막 길  (0) 2020.08.31
BOJ : 11048 이동하기  (0) 2020.08.28
BOJ : 9465 스티커  (0) 2020.08.28
BOJ : 1932 정수 삼각형  (0) 2020.08.28
BOJ : 11054 가장 긴 바이토닉 부분 수열  (0) 2020.08.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함