본문 바로가기
Algorithm(BOJ, Python)/Dynamic Programing

[백준_2491] 수열 python

by kurooru 2022. 7. 22.

어제 과음한 관계로

오늘은 쉬운문제를,,

# n 입력
n = int(input())

# n_list 입력
n_list = list(map(int, input().split()))

# dp1 (연속해서 같거나 커지는 최댓값 구하기 위한 dp)
dp1 = [
    0 for _ in range(n)
]

# dp1 초기설정
dp1[0] = 1

# dp1 채워넣기
for i in range(1, n):
    
    # n_list[i] 가 n_list[i-1]보다 크거나 같으면,
    if n_list[i] >= n_list[i-1]:
        # 전 dp + 1
        dp1[i] = dp1[i-1] + 1
    
    # 작으면
    else:
        # 1로 초기화
        dp1[i] = 1

# dp2 (연속해서 같거나 작아지는 최댓값 구하기 위한 dp)
dp2 = [
    0 for _ in range(n)
]

# dp2 초기설정
dp2[0] = 1

# dp2 채워넣기
for i in range(1, n):

    # n_list[i] 가 n_list[i-1]보다 작거나 같으면,
    if n_list[i] <= n_list[i-1]:
        # 전 dp + 1
        dp2[i] = dp2[i-1] + 1
    
    # 크면
    else:
        # 1로 초기화
        dp2[i] = 1

# 두 dp의 최댓값 중
# 더 큰값을 출력
print(max(max(dp1), max(dp2)))