관리 메뉴

솜씨좋은장씨

[BaekJoon] 11054번 : 가장 긴 바이토닉 부분 수열 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 11054번 : 가장 긴 바이토닉 부분 수열 (Python)

솜씨좋은장씨 2020. 6. 28. 11:47
728x90
반응형

1일 1문제 140일차!

140일차의 문제는 백준의 가장 긴 바이토닉 부분 수열 입니다.

 

11054번: 가장 긴 바이토닉 부분 수열

첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)

www.acmicpc.net

Solution

import sys
r = lambda : sys.stdin.readline()

def _get_seq_len(a):
    dp = [1 for _ in range(len(a))]
    rev_dp = [1 for _ in range(len(a))]
    for i in range(len(a)):
        dp[i] = 1
        for j in range(i, -1, -1):
            if a[i] > a[j] and dp[i] <= dp[j]:
                dp[i] = dp[j] + 1
    for i in range(len(a)-1, -1, -1):
        rev_dp[i] = 1
        for j in range(i, len(a)):
            if a[i] > a[j] and rev_dp[i] <= rev_dp[j]:
                rev_dp[i] = rev_dp[j] + 1
    print(max([i+j for i,j in zip(dp, rev_dp)])-1)
    
N = int(r())
seq = list(map(int, r().split()))
_get_seq_len(seq)
 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

 

Comments