728x90
반응형
N=int(input())
List = list(map(int, input().split()))
dp1 = [1]*N
dp2 = [1]*N
sub_len=[0]*N
Max=0
for i in range(N):
for j in range(i):
if List[i] > List[j]:
dp1[i] = max(dp1[i], dp1[j]+1)
List.reverse()
for i in range(N):
for j in range(i):
if List[i]>List[j]:
dp2[i]=max(dp2[i],dp2[j]+1)
dp2.reverse()
for i in range(N):
sub_len[i]=dp1[i]+dp2[i]
print(max(sub_len)-1)
증가, 감소 각각 구해서 더한 후 가장 큰 값을 출력하기
LIS 알고리즘
아 이해됐따!!
db1에 각각 채우구 비교하면서 가져가는 거야 큰거를 만나면 바꿔주고
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 10773 파이썬 (0) | 2022.09.02 |
---|---|
10828 스택 파이썬 풀이 (0) | 2022.09.02 |
백준 10816번 숫자 카드 2번 시간초과 Counter 내장함수 이용 (0) | 2022.08.20 |
백준 1620번 나는야 포켓몬 마스터 이다솜 파이썬 풀이 시간 초과 해결 (0) | 2022.08.19 |
백준 14425번 문자열 집합 문제 파이썬 풀이 시간 초과 (0) | 2022.08.19 |