기억보다는 기록을 해볼까

가장 긴 증가하는 부분 수열 11053 (백준으로 C++ 공부하기 35일차) 본문

백준으로 C++ 공부하기

가장 긴 증가하는 부분 수열 11053 (백준으로 C++ 공부하기 35일차)

옥상에서 2021. 12. 15. 19:49
728x90

문제

 

11053번: 가장 긴 증가하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이

www.acmicpc.net

생각

 

코드

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

int main() {
	int n;
	int dp[1000];
	int arr[1000];
	int sum = 0;
	cin >> n;

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

	for (int i = 0; i < n; i++) { //현재 위치
        //자기 자신만으로도 1
		dp[i] = 1;

		for (int j = 0; j < i; j++) { //검사위치
			if (arr[i] > arr[j]) //현재위치보다 뒤쪽에서 자신보다 작을 게 있으면 + 1
                dp[i] = max(dp[i], dp[j] + 1);
		}
		sum = max(sum, dp[i]);
	}
	
	cout << sum << endl;
}
728x90
Comments