MY MEMO

[BAEKJOON] 11054 가장 긴 바이토닉 부분 수열 본문

ALGORITHM/BAEKJOON

[BAEKJOON] 11054 가장 긴 바이토닉 부분 수열

l_j_yeon 2017. 10. 1. 16:28

가장 긴 증가하는 부분수열을 

1. 아래에서 부터 위로

2. 위에서 부터 아래로

3. 두개를 더한 것의 최대

4. 자신의 값이 더해졌으니까 -1

을 해주면 된다고 한다..


이러면서 배우는 거지..

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
34
35
36
37
38
39
40
41
42
43
44
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int n;
    scanf("%d", &n);
 
    vector<int> Up(1001,0), Down(1001,0), input(1001);
    for (int j = 0; j < n; j++) scanf("%d", &input[j]);
 
    int Max;
    for (int x = 0; x < n; x++)
    {
        Max = 0;
        for (int y = 0; y < x;y++)
        {
            if (input[x] > input[y])
                Max = max(Max, Up[y]);
        }
        Up[x] = Max + 1;
    }
 
    for (int x = n-1; x >=0; x--)
    {
        Max = 0;
        for (int y = n-1; y > x; y--)
        {
            if (input[x] > input[y])
                Max = max(Max, Down[y]);
        }
        Down[x] = Max + 1;
    }
 
    Max = 0;
    for (int j = 0; j < n; j++)
        Max = max(Max, Down[j] + Up[j]);
     
    printf("%d", Max-1);
 
    return 0;
}


'ALGORITHM > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 9507 Generations of Tribbles  (0) 2017.10.01
[BAEKJOON] 1904 01타일  (0) 2017.10.01
[BAEKJOON] 1932 숫자 삼각형  (0) 2017.09.29
[BAEKJOON] 1915 가장 큰 정사각형  (0) 2017.09.28
[BAEKJOON] 11727 2*n 타일링 2  (0) 2017.09.28