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 |