본문 바로가기
알고리즘/DP

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

by Jason95 2021. 1. 29.

문제 링크 : www.acmicpc.net/problem/11053

내 풀이(2021.1.29.) :

#include <iostream>
#include <algorithm>

using namespace std;

int arr[1000];
int dp[1000];

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

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

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

	return 0;
}

dp 배열의 모든 값들을 0이 아닌 1로 초기화 해야 했다. 초기값 설정에서 실수가 있었다.

'알고리즘 > DP' 카테고리의 다른 글

백준 10844번 : 쉬운 계단 수  (0) 2021.01.30
백준 11660번 : 구간 합 구하기 5  (0) 2021.01.29
백준 1932번 : 정수 삼각형  (0) 2021.01.29
백준 1149번 : RGB 거리  (0) 2021.01.29
백준 17626번 : Four Squares  (0) 2021.01.22