사용자 이름
시간 제한3초메모리 제한256 MB
이름과 성에서 정해진 규칙으로 소문자 사용자 이름을 만들고, 충돌이 나면 숫자를 붙여 고유하게 만든 뒤 순서대로 출력한다.
문제
한 대학의 전산 시스템은 다음 규칙에 따라 각 사람에게 사용자 이름(user name)을 부여한다.
- 사용자 이름의 길이는 최대
MAXLEN자이다.MAXLEN값은 각 테스트 케이스의 입력으로 주어진다. - 사용자 이름의 첫 글자는 그 사람의 이름(first name)의 첫 글자를 소문자로 바꾼 것이다. 이때와 규칙 3에서 아포스트로피(
')와 하이픈(-)은 무시한다. - 사용자 이름이
MAXLEN자를 넘지 않는 범위에서, 그 사람의 성(last name) 글자를 가능한 한 많이 소문자로 이어 붙인다. 성의 첫 글자부터 시작해 성에 나오는 순서대로 붙인다. - 규칙 1–3으로 만든 사용자 이름이 이미 데이터베이스에 있으면 다음과 같이 중복을 해소한다. 규칙 3의 사용자 이름 뒤에 일련번호
1–9를 순서대로 붙이되, 길이가MAXLEN을 넘지 않을 때만 붙인다. 한 자리 숫자를 붙였을 때MAXLEN을 넘는다면, 숫자를 붙이기 전에 마지막 글자 하나를 지운다. - 규칙 1–4로 만든 사용자 이름이 이미 데이터베이스에 있으면 다음과 같이 중복을 해소한다. 규칙 3의 사용자 이름 뒤에 일련번호
10–99를 순서대로 붙이되, 길이가MAXLEN을 넘지 않을 때만 붙인다. 두 자리 숫자를 붙였을 때MAXLEN을 넘는다면, 필요한 만큼 마지막 글자 하나 또는 마지막 두 글자를 지운 뒤 숫자를 붙인다. - 위 규칙만으로 항상 중복을 피할 수 있다고 가정한다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 양의 정수, 즉 이름의 개수와 MAXLEN 값()이 주어진다. 그다음 줄부터 이름 목록이 이어진다.
각 이름은 최대 80자이다. 이름(first name)으로 시작하여, 있다면 중간 이름(middle name)이 이어지고, 성(last name)으로 끝난다. 각 부분은 공백 하나로 구분된다. 이름에는 대문자와 소문자, 하이픈, 아포스트로피가 들어갈 수 있다. 성은 최소 두 글자이고, 나머지 부분은 최소 한 글자이다(이니셜만 있을 수도 있다). 한 테스트 케이스의 이름은 최대 200개이다.
마지막 테스트 케이스 뒤에는 이름의 개수와 MAXLEN이 모두 0인 줄이 오며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 먼저 Case k 형식으로 케이스 번호를 한 줄에 출력한다(k는 1부터 시작). 그다음, 입력에 주어진 이름 순서와 같은 순서로 생성된 사용자 이름을 한 줄에 하나씩 출력한다.