DHistory

[Baekjoon] DP - 2491 수열 본문

Computer Science/Algorithm

[Baekjoon] DP - 2491 수열

ddu0422 2023. 9. 11. 16:44

문제

 

2491번: 수열

0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾

www.acmicpc.net

 

풀이

"""
d[n]: n일 때, 가장 긴 구간이 되는 길이
"""
import sys

n = int(sys.stdin.readline().rstrip())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))[:n]


def solution(numbers):
    # 가장 긴 구간이 되는 길이의 최솟값은 1이다.
    d1 = [1] * len(numbers)
    d2 = [1] * len(numbers)

    for i in range(len(numbers) - 1):
        if numbers[i + 1] >= numbers[i]:
            d1[i + 1] = d1[i] + 1

    numbers = numbers[::-1]

    for i in range(len(numbers) - 1):
        if numbers[i + 1] >= numbers[i]:
            d2[i + 1] = d2[i] + 1

    return max(d1 + d2)


print(solution(numbers))

 

채점 결과