← Back to List

22970번: 문제 재탕 ↗

Solutions

Python 3
1.1 KB | 1110 chars
import sys
from math import sqrt, pi, sin, factorial, ceil, floor
from datetime import datetime, timedelta
sys.setrecursionlimit(10**7)

BLANK = " "

# inp = input
inp = lambda : sys.stdin.readline().rstrip()
mii = lambda x = BLANK : [*map(int,inp().split(x))]
mfi = lambda x = BLANK : [*map(float,inp().split(x))]
ii = lambda : int(inp())
fi = lambda : float(inp())
p = print


def solve():
  n = ii()
  l = mii()
  
  if n == 1:
    p(1)
    return
  
  sign = []
  
  for i in range(1, n):
    if l[i] < l[i - 1]:
      sign.append(-1)
    elif l[i] > l[i - 1]:
      sign.append(1)
    else:
      sign.append(0)
  
  crt = sign[0]
  cnt = 1
  l2 = []
  mx = 1

  for i in sign[1:]:
    if crt == i:
      cnt += 1
    else:
      l2.append([crt, cnt])
      crt = i
      cnt = 1
  l2.append([crt, cnt])
  
  
  for i, cnt in l2:
    if i in [1, -1]:
      mx = max(mx, cnt + 1)
  
  
  for i in range(1, len(l2)):
    prev = l2[i - 1]
    crt = l2[i]
    
    if prev[0] == 1 and crt[0] == -1:
        mx = max(mx, 1 + prev[1] + crt[1])
    
  p(mx)
  
  
tc = 1

for t in range(1, tc+1):
  ret = solve()