파이썬 알고리즘

[파이썬] 백준 2491 수열

뜻 지, 깨달음 오 2022. 10. 3. 07:27

https://www.acmicpc.net/problem/2491

 

2491번: 수열

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

www.acmicpc.net

 

설계 시 주의했던 점)

 

1. 수열이 증가 or 감소할 수 있기 때문에 증가하는 수열의 길이와 감소하는 수열의 길이를 따로 측정해줬다.

맨 끝네서 max 함수를 통해 실제 최대값을 구했다.

 

2. 문자열을 끝까지 돌기 전까지는 최대 길이의 수열이 몇인지 모르기 때문에,

증가or 감소하는 수열이 끊길때 (계속 증가or감소하지 않을때), cnt변수를 초기화하면서 continue를 해줬다.

 

3. 한자리로 이루어진 수열의 정답은 1이다.

즉, tc가 

1
1

일때 답은 1이다.

 

 

 

 

전체코드)

N = int(input())
arr = list(map(int, input().split()))

MAX_up = 1
cnt1 = 1
MAX_down = 1
cnt2 = 1
for i in range(1, N):
    if arr[i-1]<=arr[i]:
        cnt1 +=1
        if cnt1 > MAX_up:
            MAX_up = cnt1
    else:
        cnt1 = 1
        continue


for i in range(1, N):
    if arr[i-1]>=arr[i]:
        cnt2 +=1
        if cnt2 > MAX_down:
            MAX_down = cnt2
    else:
        cnt2 = 1
        continue

print(max(MAX_up, MAX_down))