반응형
문제
https://www.acmicpc.net/problem/11054
이전문제와 비슷한 문제다.
이전문제는 오름차순만 구했다면 이번문제는 내림차순도 구해주어
두결과값의 합에서 1을 뺀값의 최대값이 정답이 될것이다.
내림차순은 반대쪽에서 부터 시작하는 오름차순으로 구현하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import sys n=int(sys.stdin.readline()) bitonic=list(map(int, sys.stdin.readline().split())) ascending=[0 for _ in range(n)] #오름차순 descending=[0 for _ in range(n)] #내림차순 for i in range(n):#오름차순 긴수열 max_value=0 for j in range(i): if bitonic[i]>bitonic[j]: if max_value<ascending[j]: max_value=ascending[j] ascending[i]=max_value+1 for i in range(n-1,-1,-1):#반대쪽에서 시작하는 오름차순 긴수열 max_value = 0 for j in range(n-1,i,-1): if bitonic[i]>bitonic[j]: if max_value<descending[j]: max_value=descending[j] descending[i]=max_value+1 result=[ascending[i]+descending[i]-1 for i in range(n)]#오름차순과 내림차순 수열길이의 합 print(max(result)) | cs |
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법 백준 9251 (0) | 2020.01.12 |
---|---|
[Python]동적계획법 백준 2565 (0) | 2020.01.12 |
[Python]동적계획법 백준 11053 (0) | 2020.01.11 |
[Python]동적계획법 백준 2156 (0) | 2020.01.10 |
[Python]동적계획법 백준 10844 (0) | 2020.01.10 |
최근댓글