728x90
https://www.acmicpc.net/problem/11054
이문제는 가장 긴 증가하는 수열 + 가장 긴 감소하는 수열을 합쳐놓은 문제같다 ㅋㅋ
마침 두개 다 풀었고, 그래서 나는
1. 가장 긴 증가하는 수열 만들기 : dp
2. 가장 긴 감소하는 수열 만들기 : dp2
3. 합친 수열중에서 가장 길이가 긴 수열 값 구하기 -> dp3 테이블을 만들었다.
# 11054 가장 긴 바이토닉 수열
n = int(input())
array = list(map(int, input().split()))
dp = [1]*n
dp2 = [1]*n
dp3 = [0]*n
# 증가하는 수열
for i in range(n):
for j in range(i):
if array[i] > array[j]:
dp[i] = max(dp[i], dp[j] +1)
max_index = 0
max_length = 0
for i in range(n):
if dp[i] > max_length:
max_length = dp[i]
max_index = i
# 감소하는 수열
for i in range(n-1, -1, -1):
for j in range(i+1, n):
if array[i] > array[j]:
dp2[i] = max(dp2[i], dp2[j]+1)
for i in range(n):
dp3[i] = dp[i] + dp2[i] -1
print(max(dp3))
ㅋㅋㅋㅋ 나의 시도들...
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준/삼성] 16236 아기상어 (0) | 2022.02.03 |
---|---|
[백준] 1699 제곱수의 합 <부제: 너무 느린 파이썬 극복하기;;> (0) | 2022.02.01 |
[백준] 1991 트리 순회 (0) | 2022.01.28 |
[백준] 18353 병사 배치하기 (0) | 2022.01.27 |
[백준] 9663 N-Queen Python 풀이 와 백트래킹, 그리고 DFS의 비효율적인 사용 (0) | 2022.01.27 |