728x90

LIS 문제에서 부등호 하나만 반대 부등호로 바꿔주면 된다.

 

11722번: 가장 긴 감소하는 부분 수열

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

www.acmicpc.net

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	int* numbers = new int[n];
	for (int i = 0; i < n; i++) {
		cin >> numbers[i];
	}
	int* lds = new int[n];
	int maxLength = 0;
	for (int i = 0; i < n; i++) {
		int longestLength = 0;
		for (int j = 0; j < i; j++) {
			if (numbers[i] < numbers[j]) {
				if (lds[j] > longestLength)
					longestLength = lds[j];
			}
		}
		lds[i] = longestLength + 1;
		if (lds[i] > maxLength)
			maxLength = lds[i];
	}
	cout << maxLength;
	return 0;
}
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1978번 소수 찾기  (0) 2020.01.30
[백준] 4673번 셀프 넘버  (0) 2020.01.30
[백준] 11568번 민균이의 계략  (0) 2020.01.29
[백준] 14501번 퇴사  (0) 2020.01.29
[백준] 1110번 더하기 사이클  (0) 2020.01.29

+ Recent posts