저녁 먹는 소들

면접 대비

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

요약
1과 2로 이루어진 수열이 주어질 때, 오름차순이 되도록 바꿔야 하는 값의 최소 개수를 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 누적 합, 그리디, 배열
정답자
아직 제출이 없습니다

문제

소들은 저녁 식사 상대에 대해 무척 까다롭습니다. 소들은 두 그룹(각각 1번과 2번)으로 나뉘어 있으며, 반드시 순서대로 식사하려고 합니다. 즉 줄의 앞쪽에는 1번 그룹이, 뒤쪽에는 2번 그룹이 와야 합니다. 소들이 먹이 구역으로 들어가려고 축사 앞에 줄을 설 때 문제가 시작됩니다.

각 소 ii는 자신의 식사 그룹을 나타내는 카드를 들고 있으며, 카드에는 DiD_i (1≤Di≤21 \le D_i \le 2)가 새겨져 있습니다. 전체 NN (1≤N≤30,0001 \le N \le 30{,}000)마리의 소가 줄을 섰지만, 카드 기준으로 정렬되어 있지 않다는 것이 한눈에 보입니다.

농부 존은 줄을 따라 걸어가며 소의 그룹 배정을 바꿉니다. 기존 숫자를 지우고 새 숫자를 적는 방식입니다. 이렇게 해서 카드가 오름차순으로 정렬된 상태(예: 112222나 111122)를 만들려고 합니다. 드물게는 한 그룹만 남을 수도 있습니다(예: 1111이나 222).

농부 존은 게으르지만 궁금합니다. 올바른 식사 그룹 배치를 만들기 위해 바꿔야 하는 카드의 최소 개수는 몇 개일까요? 그는 카드의 숫자만 바꿀 수 있고, 줄에 선 소들의 순서를 바꿀 수는 없습니다.

입력

  • 첫째 줄: 정수 NN.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 소 ii의 식사 그룹을 나타내는 정수 DiD_i가 하나 주어집니다.

출력

  • 한 줄에 정수 하나: 소들을 위 설명처럼 식사 그룹으로 정렬하기 위해 농부 존이 바꿔야 하는 카드의 최소 개수.

예제2

  1. 예제 1

    입력
    7
    2
    1
    1
    1
    2
    2
    1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    6
    1
    1
    2
    2
    2
    2
    
    예상 출력
    0