백준 2491번 바로가기

나의 풀이

# 입력
n = int(input())
arr = list(map(int,input().split()))
sml2big = [1]*n
big2sml = [1]*n

# 처리
def find_max(data, dp):
  for i in range(n-1):
    if data[i] <= data[i+1]:
      dp[i+1] = dp[i] + 1
  return max(dp)

print(max(find_max(arr,sml2big),find_max(arr[::-1], big2sml)))

CODE REVIEW

  1. dp를 이용한 문제. data[i]와 data[i+1]을 비교해서 크거나 같으면 count를 추가해주면 된다.
  2. 주어진 array를 뒤집으면 작거나 같다크거나 같다가 되기 때문에 함수 하나를 만들어놓고 arrarr[::-1]을 각각 입력했다.
  3. arr을 2차원, 3차원으로 확장하면 재밌는 문제를 만들어낼 수 있을 것 같다.