만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

색깔 돌

면접 대비

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

요약
남은 돌에서 각 색이 하나의 연속 구간을 이루도록 최소 개수의 돌을 제거한다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

한 줄로 놓인 mm개의 돌이 있고, 각 돌은 kk가지 색 중 하나로 칠해져 있습니다. 같은 색의 돌 두 개 사이에 다른 색의 돌이 끼어 있지 않도록, 즉 남은 돌들을 왼쪽에서 오른쪽으로 읽었을 때 각 색의 돌이 모두 하나의 연속된 덩어리로 모이도록 돌을 제거하려고 합니다. 돌의 순서를 바꿀 수는 없고 오직 제거만 할 수 있을 때, 제거해야 하는 돌의 최소 개수를 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 두 정수 mm과 kk가 주어집니다 (1≤m≤1001 \le m \le 100, 1≤k≤51 \le k \le 5). 다음 줄에는 각 돌의 색을 나타내는 mm개의 정수 x1,…,xmx_1, \ldots, x_m이 주어지며, 각 값은 집합 {1,…,k}\{1, \ldots, k\}에 속합니다. 입력의 끝은 m=k=0m = k = 0인 줄로 표시되며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다, 조건을 만족시키기 위해 제거해야 하는 돌의 최소 개수를 한 줄에 출력합니다.

힌트

예를 들어 돌의 색이 순서대로 2 1 2 2 1 1 3 1 3 3인 경우, 2번째 돌과 7번째 돌을 제거하면 2 2 2 1 1 1 3 3이 되어 2가 세 개, 1이 세 개, 3이 두 개씩 각각 하나의 덩어리로 모입니다. 따라서 최소 제거 개수는 2입니다. 다른 최적해가 존재할 수도 있습니다.

예제4

  1. 예제 1

    입력
    10 3
    2 1 2 2 1 1 3 1 3 3
    0 0
    
    예상 출력
    2
    
  2. 예제 2

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

    입력
    4 2
    1 2 1 2
    0 0
    
    예상 출력
    1
    
  4. 예제 4

    입력
    3 2
    1 2 1
    4 2
    2 2 1 1
    0 0
    
    예상 출력
    1
    0