상자 빼내기
문제
한 창고의 선반에는 상자가 왼쪽부터 오른쪽까지 한 줄로 놓여 있다. 상자는 모두 N개이고, 왼쪽부터 1번, 2번, 차례로 번호를 붙여 부른다. 상자마다 무게가 적혀 있다.
창고 관리자는 선반을 정리하려고 한다. 정리를 마친 선반은 왼쪽에서 오른쪽으로 갈수록 상자의 무게가 반드시 줄어들어야 한다. 앞쪽 상자가 뒤쪽 상자보다 가벼우면 안 되고, 무게가 같은 두 상자가 함께 남아 있어도 안 된다.
관리자가 쓸 수 있는 방법은 상자를 선반에서 빼내는 것 하나뿐이다. 남은 상자를 다른 자리로 옮기거나 순서를 바꿀 수는 없다. 상자를 빼내면 그 자리가 비고, 남은 상자들은 원래 놓인 순서를 그대로 지킨다.
선반에 남는 상자의 수가 가장 많아지도록 정리할 때, 빼내야 하는 상자의 최소 개수를 계산하는 프로그램을 작성하여라.
예를 들어 N=7개의 상자의 무게가 다음의 표와 같다고 해보자.
| 상자 번호 | 1번 | 2번 | 3번 | 4번 | 5번 | 6번 | 7번 |
|---|---|---|---|---|---|---|---|
| 무게 | 15 | 11 | 4 | 8 | 5 | 2 | 4 |
3번 상자와 6번 상자를 빼내면 선반에 남는 상자는 다음의 표와 같다.
| 남은 상자 | 1번 | 2번 | 4번 | 5번 | 7번 |
|---|---|---|---|---|---|
| 무게 | 15 | 11 | 8 | 5 | 4 |
왼쪽에서 오른쪽으로 갈수록 무게가 줄어들므로 정리 조건을 만족한다. 남은 상자는 5개이고 빼낸 상자는 2개다. 상자 1개만 빼내서 조건을 만족시키는 방법은 없으므로, 현재 예시에서의 정답은 2다.
3번 상자의 무게와 7번 상자의 무게는 둘 다 4라서 두 상자를 함께 남길 수는 없다. 이처럼 무게가 같은 상자가 섞여 있을 때는 그 가운데 한 개만 남을 수 있다.
남기는 상자를 다르게 고르고도 5개를 남길 수 있다. 예를 들어 3번과 7번을 빼내면 15, 11, 8, 5, 2가 남아 이쪽도 조건을 만족한다. 어느 쪽을 고르더라도 빼내는 상자가 2개라는 점은 같으므로 답은 달라지지 않는다.
처음부터 무게가 왼쪽에서 오른쪽으로 갈수록 줄어드는 경우도 있다. 이때는 상자를 하나도 빼낼 필요가 없다. 또한 상자가 1개뿐인 경우에도 조건을 따질 상대가 없으므로 빼낼 상자가 없다.
입출력 예시
예시 1
입력
7 15 11 4 8 5 2 4
출력
2
예시 2
입력
5 2407220 9506188 5579917 3823629 3963928
출력
2
예시 3
입력
1 356093
출력
0
입력 조건
가장 먼저 첫째 줄에 상자의 수 N이 주어진다. N은 1 이상 2,000 이하의 자연수다.
이어서 둘째 줄에 1번 상자부터 N번 상자까지의 무게가 공백으로 구분되어 차례대로 주어진다. 각 무게는 1 이상 10,000,000 이하의 자연수다. 무게가 같은 상자가 여러 개 있을 수도 있다. 상자는 왼쪽부터 오른쪽까지 놓인 순서대로 주어진다.
출력 조건
선반에 남는 상자의 수가 가장 많아지도록 정리할 때 빼내야 하는 상자의 최소 개수를 한 줄에 출력한다. 하나도 빼내지 않아도 되는 경우에는 0을 출력한다.
요구사항
- 남은 상자는 왼쪽에서 오른쪽으로 갈수록 무게가 반드시 줄어들어야 합니다
- 무게가 같은 두 상자를 함께 남길 수 없습니다
- 상자의 자리를 옮기거나 순서를 바꿀 수 없습니다. 빼내는 것만 할 수 있습니다
- 빼내는 상자의 개수를 출력합니다. 남는 상자의 개수가 아닙니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 356093
0
5 2407220 9506188 5579917 3823629 3963928
2
7 15 11 4 8 5 2 4
2
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.