문제1214--신입 사원의 임시 ID

1214: 신입 사원의 임시 ID

실행시간 제한: 1 Sec  메모리사용 제한: 128 MB
제출: 1  통과: 1
<<--이전 문제 소스 제출 다음 문제-->>

문제 설명  

DH씨는 회사에서 신입 사원들의 임시 ID를 관리하는 업무를 맡고 있다. 
신입 사원들의 임시 ID는 일주일 동안만 사용하며, 그 이후에는 정식 ID가 발급이 된다.
임시 ID를 발급할 때, 최대한 신입 사원들이 원하는 숫자(4자리)로 하고자 하며, 
만약, 신입 사원들끼리 원하는 숫자가 중복이 된다면 먼저 제출한 사원에게만 그 숫자를 임시 ID로 발급하고 나머지 사원들은 다른 숫자로 발급한다. 
이때, 아래의 규칙을 지키면서 신입 사원들의 임시 ID를 발급하고자 한다.

[임시 ID 발급 규칙]
1) 임시 ID를 사용하는 신입 사원들의 수는 최대 10명을 초과하지 않는다.
2) 최대한 신입 사원들이 원하는 숫자로 임시 ID를 발급한다.
3) 신입 사원들끼리 원하는 숫자가 중복되지 않는다면, 반드시 그 숫자로 임시 ID를 발급한다. 
4) 신입 사원들끼리 원하는 숫자가 중복된다면, 가장 먼저 제출한 사원에게만 그 숫자로 임시 ID를 발급하고, 나머지 사원들은 다른 숫자로 발급한다.
5) 다른 숫자로 임시 ID를 발급할 때는 반드시  최초에 희망한 숫자의 1의 자릿수만 변경을 하며, 가능한 낮은 수로 발급한다.

n명의 신입 사원들이 희망 숫자를 제출하고, 제출한 순으로 희망 숫자가 입력된다고 할 때, 
희망 숫자가 아닌 다른 숫자로 발급해야 하는 경우의 수와  모든 신입 사원들의 임시 ID를 출력하는 프로그램을 작성하시오.

입력 설명

첫 번째줄에 신입 사원의 수 n이 입력된다.  (단, 1 ≤ n ≤ 10)
두 번째줄부터 n개의 줄에 걸쳐 신입 사원들이 제출한 희망 숫자 d(4자리)가 입력된다. (단, 0000 ≤ d ≤ 9999)
이때, 먼저 제출한 순으로 입력된다. 

출력 설명

첫 번째 줄에 신입 사원이 희망한 숫자가 아닌 다른 숫자로 발급해야하는 경우의 수를 출력한다.
두 번째 줄부터 n개의 줄에 걸쳐 신입 사원들의 임시 ID를 출력한다. (단, 희망 숫자를 제출한 순으로 출력한다.)

입력 예시 Copy

5
0023
5839
5839
0024
5839

출력 예시 Copy

2
0023
5839
5830
0024
5831

출처/분류

 ADH