마운트 마라톤

면접 대비

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

요약
각 카드가 한 장짜리 더미로 놓일 때 단일 카드 더미를 바로 오른쪽 더미 위로 옮깁니다. 단 옮기는 카드 값이 오른쪽 맨 위 카드 값 이상이어야 하며 가능한 한 최소 더미 수를 구합니다.
난이도

보통10점 중 7점

유형
배열, 스택, 동적 계획법, 완전 탐색
정답자
아직 제출이 없습니다

문제

마운트 마라톤은 52장의 일반 트럼프 카드로 하는 혼자서 하는 게임이다. 게임을 시작할 때 플레이어는 덱을 섞어 카드 NN장을 앞면이 보이게 탁자 위에 놓아, 카드 한 장씩으로 이루어진 NN개의 더미를 일직선으로 만든다. 나머지 카드는 이후 게임에서 쓰지 않는다. 그다음 플레이어는 더 옮길 더미가 없을 때까지 더미를 다른 더미 위로 옮기는 동작을 반복한다. 게임의 목표는 남은 더미의 수를 최소로 만드는 것이다. 더미 pp를 다른 더미 qq 위로 옮길 때는 다음 조건을 만족해야 한다.

  • 더미 pp는 카드 한 장으로 이루어진 더미여야 한다.
  • 더미 pp의 유일한 카드 값은 더미 qq의 맨 위 카드 값보다 크거나 같아야 한다.
  • 더미 qq는 더미 pp의 바로 오른쪽에 남아 있는 더미여야 한다.

아래 그림 (a)는 게임 시작 시 카드 6장이 놓인 배치를 보여 준다. 플레이어는 다섯 번째 더미를 여섯 번째 더미 위로 옮기고, 이어서 두 번째 더미를 세 번째 더미 위로 옮길 수 있다. 더 옮길 더미가 없으므로 이대로 두면 그림 (b)처럼 더미 4개가 남은 채로 게임이 끝난다. 그러나 이 배치에서는 그림 (c)에 나오는 더미 3개만 남기고 게임을 끝낼 수도 있다.

처음 더미들이 주어질 때, 게임이 끝났을 때 남길 수 있는 더미 수의 최솟값을 구해야 한다.

입력

첫째 줄에는 게임에 쓰는 카드 수를 나타내는 정수 NN (1≤N≤521 \le N \le 52)이 주어진다. 둘째 줄에는 처음 더미에 놓인 카드의 값을 왼쪽부터 오른쪽으로 나열한 NN개의 정수 C1,C2,…,CNC_1, C_2, \ldots, C_N (1≤Ci≤131 \le C_i \le 13, i=1,2,…,Ni = 1, 2, \ldots, N)이 주어진다. 각 카드 값은 최대 네 번까지 나타난다.

출력

게임이 끝났을 때 남길 수 있는 더미 수의 최솟값을 나타내는 정수를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    6
    5 8 6 6 10 4
    
    예상 출력
    3
    
  2. 예제 2

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

    입력
    5
    2 4 6 8 10
    
    예상 출력
    5
    
  4. 예제 4

    입력
    11
    13 1 1 1 13 7 8 10 4 2 1
    
    예상 출력
    4