개꿀잼 애드혹이다
길이가 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
28
29
30
|
n = int(input())
a = list(map(int, input().split()))
ans = 1
for i in range(n-1):
if a[i] == a[i+1]: #문자열의 길이가 짝수
temp = 2
l = i-1
r = i+2
while 0 <= l and r < n:
if a[l] == a[r] and a[l] < a[l+1]:
temp += 2
l -= 1
r += 1
else:
break
ans = max(temp, ans)
if i > 0 and a[i-1] == a[i+1] and a[i-1] < a[i]: #문자열의 길이가 홀수
temp = 3
l = i-2
r = i+2
while 0 <= l and r < n:
if a[l] == a[r] and a[l] < a[l+1]:
temp += 2
l -= 1
r += 1
else:
break
ans = max(temp, ans)
print(ans)
|
cs |
코드가 간결하지 않다. 나만 알아볼 수 있으면 괜찮긴 한데..
오타, 오류 지적 환영합니다.
'백준 문제풀이' 카테고리의 다른 글
백준 20913 - Mixtape Management [Python] (0) | 2021.02.09 |
---|---|
백준 19240 - 장난감 동맹군 [C++] (0) | 2021.01.20 |
백준 20531 - 인간관계 [Python] (0) | 2021.01.04 |
백준 20529 - 가장 가까운 세 사람의 심리적 거리 [Python] (0) | 2021.01.04 |
백준 20528 - 끝말잇기 [Python] (0) | 2021.01.04 |