[BOJ] Q2491 수열
[BOJ] Q2491 수열
Question
Language: Python
Difficulty: Silver 4
오름차순용 리스트와 내림차순 리스트 2개를 이용해서 증가하면 오름차순 리스트의 값을 변화 시키고, 감소하면 내림차순 리스트의 값을 변화시킨다.
이차원 리스트에 대해 최대값을 찾는 함수 사용
max(map(max,inclinations))
각 행에 대해 최대값들을 찾아서, 그 중 최대값을 찾는 과정을 위와 같이 간략하게 표현할 수 있다.
Solution
def solution():
inclinations=[[1] *2 for _ in range(length)]
max_length=0
#0 for incline 1 for decline
for i in range(length-1):
if datas[i]<=datas[i+1]:
inclinations[i+1][0]=(inclinations[i][0]+1)
if datas[i] >= datas[i+1]:
inclinations[i+1][1]=(inclinations[i][1]+1)
max_length=(max(map(max,inclinations)))
print(max_length)
if __name__ == "__main__":
length=int(input())
datas=list(map(int,input().split()))
solution()
Solution2
해당 문제는 투포인터로도 생각해볼 수 있는 문제이다.
import os
def solution():
max_length=0
start,end=0,0
while end < length-1:
if datas[end] > datas[end+1]:
start=end+1
end+=1
max_length=max(max_length,end-start+1)
max_length=max(max_length,end-start+1)
start,end=0,0
while end < length-1:
if datas[end] < datas[end+1]:
start=end
end+=1
max_length=max(max_length,end-start+1)
max_length=max(max_length,end-start+1)
print(max_length)
댓글남기기