모양 정돈

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

요약
세 종류의 도형이 나열되어 있을 때, 각 종류를 하나의 연속된 블록으로 모으는 데 필요한 최소 교환 횟수를 구합니다.
난이도

보통10점 중 6점

유형
슬라이딩 윈도우, 그리디, 배열
정답자
아직 제출이 없습니다

문제

세모, 네모, 동그라미 모양이 일렬로 나열되어 있다. 임의의 두 위치에 있는 모양을 골라 서로 맞바꾸는 작업을 반복하여, 같은 모양끼리 각각 하나의 연속한 구간을 이루도록 정돈하려고 한다. 세 종류의 모양이 놓이는 구간의 순서는 상관없다.

현재 나열된 모양의 순서가 주어질 때, 같은 모양끼리 연속하도록 정돈하는 데 필요한 맞바꾸기의 최소 횟수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 모양의 전체 개수 NN이 주어진다. NN은 33 이상 100,000100,000 이하이다.

둘째 줄에 나열된 모양을 나타내는 NN개의 정수가 공백으로 구분되어 주어진다. 정수 11은 세모, 정수 22는 네모, 정수 33은 동그라미를 나타낸다.

세 종류의 모양은 각각 최소 한 번 이상 나타난다.

출력

같은 모양끼리 연속하도록 정돈하기 위해 필요한 맞바꾸기의 최소 횟수를 출력한다.

예제1

  1. 예제 1

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