시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 28 | 10 | 9 | 60.000% |
0부터 9까지의 숫자가 각각 적힌 열 개의 공과, 0부터 9까지의 숫자 중 하나가 적힌 여러 장의 카드들이 있다. 그리고 각각 공 하나씩을 담을 수 있는 상자 네 개가 있다. 같은 숫자의 카드는 여러 장 있을 수 있지만, 공은 하나씩이다.
카드를 한 장씩 뽑아서 그에 해당하는 공을 상자 중 하나에 넣어야 하며, 다음과 같은 규칙을 따른다.
(규칙 1) 해당하는 공이 이미 상자 중 하나에 들어가 있을 경우엔 아무 일도 하지 않는다.
(규칙 2) 빈 상자가 있으면 해당하는 공을 거기에 그냥 넣으면 된다. (삽입 연산)
(규칙 3) 빈 상자가 없을 경우엔 이미 상자에 들어가 있는 공 중 하나을 빼내고, 새 공으로 교환해 넣어야 한다. (교환 연산)
임의 개수의 카드를 뽑았을 때, 삽입․교환 연산을 최소한으로 하여 순서대로 작업을 처리하는 프로그램을 작성하여 보자.
첫 줄에 뽑은 카드의 장수 n이 주어진다. (0≤n≤100) 둘째 줄에 n개의 숫자가 주어지는데, 뽑힌 카드에 적힌 숫자를 순서대로 나타낸다.
첫 줄에 필요한 최소한의 연산 수를 출력한다.
9 1 2 3 4 5 1 1 3 4
5