웨딩 DJ
면접 대비시간 제한1초메모리 제한1024 MB
노래의 흥 수준 목록이 주어질 때, 같은 수준의 노래를 모두 다른 수준으로 바꾸는 작업을 최소 몇 번 해야 수준이 줄지 않는 목록이 되는지 구합니다.
문제
늘 DJ가 되고 싶었는데, 드디어 첫 기회가 왔습니다! 결혼식에서 리스트에 적힌 순서대로 틀 곡 목록이 있습니다. 각 곡에는 "fun level"이 있습니다. 문제는 B\&G(신부와 신랑)가 fun level이 낮은 곡 뒤에 다른 곡이 나오는 것을 원하지 않는다는 점입니다. 즉, B\&G는 곡들의 fun level이 한 번도 줄어들지 않을 때만 그 플레이리스트를 좋다고 봅니다. 다행히 곡의 fun level은 조정할 수 있습니다. fun level이 인 곡을 모두 fun level 로 바꿀 수 있습니다. 예를 들어 fun level 10인 곡을 모두 fun level 7로(또는 fun level 18로) 바꿀 수 있습니다. 다음을 참고하세요.
- fun level 인 곡을 모두 fun level 로 바꾸면, 그 곡들이 모두 바뀌더라도 한 번의 변경으로 셉니다.
- fun level 인 곡을 바꾸면 fun level 인 곡이 모두 바뀌며, 그중 일부만 골라 바꿀 수는 없습니다.
- fun level 인 곡을 모두 fun level 로 바꾼 뒤, fun level 인 곡을 모두 fun level 로 바꾸기로 했다면, 두 번째 변경은 원래 목록이 아니라 갱신된 목록에 적용됩니다. 예를 들어 원래 목록이 {… 3 … 8 … 3 … 8 … 3 …}이고, fun level 3을 8로 바꾼 다음 fun level 8을 2로 바꾸기로 했다면, 두 곡이 아니라 다섯 곡의 fun level이 2로 바뀝니다.
곡들의 fun level 순서가 주어질 때, 플레이리스트의 곡 fun level이 줄어들지 않도록 레벨 인 곡을 모두 레벨 로 바꾸는 방식으로 필요한 플레이리스트 조정의 최소 횟수를 구하세요.
입력
첫 줄에 플레이리스트의 곡 수를 나타내는 정수 ()이 주어집니다. 다음 줄에는 곡이 리스트에 나타나는 순서대로 각 곡의 fun level을 나타내는 공백으로 구분된 정수 개가 주어집니다. 각 fun level은 1 이상 1,000,000,000 이하입니다.
출력
플레이리스트의 fun level이 줄어들지 않도록 만드는 조정 횟수의 최솟값을 출력하세요.
힌트
첫 번째 입출력 예시에 대한 설명:
리스트를 줄어들지 않게 만드는 한 가지 방법은 다음과 같습니다.
- fun level 7인 곡을 모두 1로 바꿉니다.
- fun level 8인 곡을 모두 3으로 바꿉니다.
- fun level 5인 곡을 모두 3으로 바꿉니다.
총 3번 변경합니다.