문제 링크

https://www.acmicpc.net/problem/11722

 

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

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

www.acmicpc.net

내가 작성한 코드

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
31
32
33
#include <iostream>
#include <cstdio>
#include <algorithm>
 
using namespace std;
 
int main(void) {
    int N;
    int min = 0;
    int max = 0;
    int arr[1001= { 0 };
    int dp[1001= { 0 };
 
    cin >> N;
 
    for (int i = 1; i <= N; i++) {
        cin >> arr[i];
    }
 
    for (int i = 1; i <= N; i++) {
        min = 0;
        for (int j = 1; j <= i; j++) {
            if (arr[i] < arr[j] && dp[j] > min) {
                min = dp[j];
            }
        }
        dp[i] = min + 1;
        if (max < dp[i]) {
            max = dp[i];
        }
    }
    cout << max << '\n';
}
cs
 

[BaekJoon]11053번 - 가장 긴 증가하는 부분 수열(DP)

문제 링크 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10,..

giantpark197cm.tistory.com

코드 채점 결과

+ Recent posts