백준 / 2491 / 수열
Question
문제링크
Silver 4
Logic
기본 구조 : dp
1. dp 리스트 안에 네 가지 수를 둔다.
- a.연속증가하는 현재 값
- b.연속증가하는 최대값
- c.연속감소하는 현재 값
- d.연속감소하는 최대값
- 한 수씩 앞 수와 비교한다(첫 숫자의 경우 같은 수를 둔다.)
3-1. 앞 수보다 크다면 : a 증가, b 값 최신화, c 초기화(1)
3-2. 같다면 : a,c 증가, b,d값 최신화
3-3. 작다면 : a 초기화, c 증가, d 값 최신화
Code
from gettext import dpgettext
from sys import stdin
N = int(stdin.readline().rstrip())
data = list(map(int,stdin.readline().rstrip().split()))
dp=[0,0,0,0]
prev = data[0]
for s in data:
if prev < s:
dp[0] += 1
dp[1] = max(dp[1],dp[0])
dp[2] = 1
elif prev == s:
dp[0] += 1
dp[1] = max(dp[1],dp[0])
dp[2] += 1
dp[3] = max(dp[3],dp[2])
else :
dp[0] = 1
dp[2] += 1
dp[3] = max(dp[3],dp[2])
prev=s
print(max(dp[1],dp[3]))
Author And Source
이 문제에 관하여(백준 / 2491 / 수열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@swany0509/백준-2491-수열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)