아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

짝수 팰린드롬

면접 대비

시간 제한1초메모리 제한512 MB

요약
주어진 수열을 길이가 짝수이고 뒤집어도 같은 조각들로 나눌 때 조각 수의 최댓값을 구하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 6점

유형
동적 계획법, 해시맵, 문자열 매칭, 배열
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 AA가 있다. 이 수열을 여러 개의 짝수 팰린드롬으로 나누려고 한다.

짝수 팰린드롬은 수열의 길이가 짝수이고 수열을 뒤집어도 뒤집기 전 수열과 동일한 것을 의미한다.

예를 들어, 수열 [12,12][12, 12]는 짝수 팰린드롬이고, 수열 [12,21][12, 21]은 뒤집으면 [21,12][21, 12]가 되어 뒤집기 전 수열과 달라서 짝수 팰린드롬이 아니다.

수열을 나누었을 때 모든 부분 수열은 짝수 팰린드롬이어야 한다. 짝수 팰린드롬이 최대한 많도록 나눌 때 짝수 팰린드롬은 최대 몇 개인지 구해보자.

입력

첫 번째 줄에 수열 AA의 길이 NN이 주어진다. NN은 항상 짝수이다. (1≤N≤5,000)(1 \le N \le 5,000)

다음 줄에는 총 NN개의 수열 AA의 원소 AiA_{i}가 주어진다. (1≤Ai≤10,000)(1 \le A_{i} \le 10,000)

출력

짝수 팰린드롬은 최대 몇 개인지 출력한다.

만약 수열을 짝수 팰린드롬을 만족하도록 나눌 수 없는 경우 -1을 출력한다.

예제3

  1. 예제 1

    입력
    10
    1 1 5 6 7 7 6 5 5 5
    
    예상 출력
    3
    
  2. 예제 2

    입력
    6
    1 1 1 1 1 1
    
    예상 출력
    3
    
  3. 예제 3

    입력
    6
    1 2 3 3 2 2
    
    예상 출력
    -1