함께 식사하기

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

요약
1부터 3까지의 값으로 이루어진 수열이 주어질 때, 수열이 비내림차순 또는 비오름차순이 되도록 카드를 바꾸는 최소 횟수를 구한다.
난이도

쉬움10점 중 3점

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

문제

소들은 저녁 식사 상대에 대해 유난히 까다롭습니다. 소들은 세 개의 식사 그룹(편의상 1, 2, 3번으로 부릅니다)으로 나뉘어 있으며, 같은 그룹끼리만 함께 식사하려고 합니다. 하지만 NN마리(1≤N≤30 0001 \le N \le 30\,000)의 소가 먹이를 먹으러 한 줄로 늘어섰을 때, 이들은 그룹별로 정렬되어 있지 않습니다.

각 소 ii는 자신의 식사 그룹을 나타내는 번호 DiD_i(1≤Di≤31 \le D_i \le 3)가 적힌 카드를 들고 있습니다.

농부는 줄을 따라 걸어가며 카드에 적힌 옛 번호를 지우고 새 번호를 적는 방식으로 소의 그룹을 바꿀 수 있습니다. 이렇게 하여 줄을 따라 읽은 그룹 번호가 오름차순(예: 111222333) 또는 내림차순(예: 333222111)으로 정렬되도록 만들려고 합니다. 소가 서 있는 순서는 바꿀 수 없고, 오직 카드의 번호만 바꿀 수 있습니다.

최종 그룹 번호 수열이 오름차순 또는 내림차순으로 정렬되도록 만들기 위해 바꿔야 하는 카드의 최소 개수를 구하세요.

입력

  • 첫째 줄: 정수 NN.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 ii번째 소의 현재 그룹 번호 DiD_i가 하나 주어집니다.

출력

  • 최종 수열이 오름차순 또는 내림차순으로 정렬되도록 만드는 데 필요한 최소 변경 횟수를 나타내는 정수 하나.

예제1

  1. 예제 1

    입력
    5
    1
    3
    2
    1
    1
    
    예상 출력
    1