백준/SILVER

[백준 11053번][C++] 가장 긴 증가하는 부분 수열

퍼펙트코딩 2022. 9. 4. 01:43
728x90
반응형

 

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

int main() {
	int n;
	cin >> n;

	//수열 저장할 벡터
	vector<int> list(n);

	//수열의 최대길이 저장할 벡터
	//초기 길이는 1
	vector<int> max(n,1);

	//수열 입력받기
	int input;
	for (int i = 0; i < n; i++) {
		cin >> input;
		list[i] = input;
	}
	
	int max_length = 1;

	//index 1부터 최대길이 저장
	for (int i = 1; i < n; i++) {
		//자신의 전 index까지 탐색
		for (int j = i-1; j >= 0; j--) {
			//자신의 값보다 작고 최대길이가 자신보다 클 때 그 수의 +1을 저장
			if (list[j] < list[i] && max[i] <= max[j])
				max[i] = max[j]+1;
		}
		//max_length보다 길면 업데이트
		if (max[i] > max_length)
			max_length = max[i];
	}

	cout << max_length;
}
728x90
반응형