문제
N개의 문자열이 주어졌을 때, 동일한 문자열이 존재하는지 판단하는 프로그램을 작성하라.
문자열이란 사이에 공백이 없는 연속된 알파벳 소문자열을 뜻한다. 문자열의 길이는 최소 1글자, 최대 20글자이다. 입력되는 문자열의 개수는 2개 이상 10,000개 이하이다.
입력
입력의 첫 번째 줄에는 입력될 문자열의 개수 N이 입력된다. 그 다음 줄에는 N개의 문자열이 공백을 사이에 두고 입력된다. 전제조건을 어긋나는 입력이 들어오는 경우는 없다.
출력
입력에서 동일한 문자열이 존재하지 않을 경우는 "unique"를 출력한다.(큰 따옴표 제외) 동일한 문자열이 발생한 경우에는 한 줄에 해당 문자열과, 문자열이 몇 번째로 입력되었는지를 출력해야 하는데, 이 경우 우선 앞에 동일한 문자열이 발견된 문자열을 출력한.
다음 공백을 출력한 다음, 공백을 사이에 두고 몇 번째로 입력이 되었는지를 출력한다. 동일한 문자열이 존재하는 문자열이 여럿 발견 되었을 경우, 매 줄마다 입력된 순서대로 앞에 나온 형식에 맞춰서 출력을 한다. 자세한 사항은 입력예시를 참고한다.
예제1
10
alice bob libe lie libe libe alice bob alice alice
alice 1 7 9 10
bob 2 8
libe 3 5 6
힌트
[사용자 정의 문자열 기본함수]
#include <stdio.h>
/// 문자열 길이구하기
int strlen(char*s, int i = 0){
while (s[i]) i++;
if (i && s[i - 1] == '\n')
s[--i] = 0;
if (i && s[i - 1] == '\r')
s[--i] = 0;
return i;
}
/// 문자열 비교하기
int strcmp(const char*s, const char*t){
while (*s && *s == *t) s++, t++;
return *s - *t;
}
/// 문자열 복사하기
void strcpy(char*dest, char*src){
while (*dest++ = *src++);
}