ICPC 레코드 매칭
면접 대비시간 제한1초메모리 제한1024 MB
두 명단의 이름과 이메일 기록을 이메일 또는 성과 이름이 정확히 같은 경우 짝지어 주고, 짝을 찾지 못한 기록을 이메일 순으로 출력한다.
문제
"서비스형 소프트웨어"를 사용할 때, 사용자는 여러 서비스에 저장된 레코드를 대조하여 그것이 같은 개체(사람, 계정, 주문 등)를 가리키는지 판단해야 하는 문제를 자주 겪는다. ICPC도 예외가 아니다. 모든 참가자는 ICPC 중앙 등록 시스템에 레코드를 갖고 있지만, 중앙 시스템이 제공하지 않는 기능을 위해 정보를 수집하고 처리하는 "외부" 애플리케이션을 함께 사용할 수 있다.
외부 애플리케이션을 사용하면 두 시스템의 항목을 대조해야 한다. 아무리 주의를 기울여 안내해도 레코드가 같은 사람을 가리키는지 분명하지 않을 때가 있다. 주로 발생하는 불일치 유형은 다음과 같다.
- 이메일 주소가 일치하지 않는다. .edu 대신 .eud처럼 잘못 입력했거나, 참가자가 중앙 ICPC 시스템과 외부 시스템에서 서로 다른 이메일 주소를 사용했기 때문일 수 있다.
- 이름이 정확히 일치하지 않는다. 입력 오류 때문이거나, 실명과 별명을 다르게 사용했기 때문일 수 있다.
여러분의 팀은 ICPC 시스템과 외부 시스템의 사람 목록을 읽고, 각 시스템에서 다른 시스템의 레코드와 매칭되지 않는 레코드를 판별하는 프로그램을 작성해야 한다. 이메일 주소가 정확히 일치하거나 성과 이름이 정확히 일치하면 두 항목이 매칭된 것으로 본다.
입력
입력은 이름과 이메일 주소 레코드 두 목록이다. 각 레코드는 이름, 성, 이메일 주소로 이루어지며 한 줄에 하나씩 탭으로 구분된다. 첫 번째 목록은 중앙 ICPC 등록 시스템의 레코드다. 이 목록은 빈 줄로 끝난다. 두 번째 목록은 외부 애플리케이션의 레코드다. 두 번째 목록은 파일의 끝으로 끝난다. (이 목록들은 실제 ICPC 데이터가 아니라 테스트용으로 적합한 데이터다.)
이메일 주소의 길이는 자를 넘지 않는다. 이메일 주소는 영문 대소문자, 숫자, 그리고 골뱅이, 밑줄, 하이픈, 마침표 특수 문자로 이루어진다. 이메일 주소는 특수 문자로 시작하지 않는다.
이름과 성의 길이는 자를 넘지 않는다. 이름은 영문 대소문자와 하이픈으로 이루어진다. 이름은 하이픈으로 시작하지 않는다.
각 입력 목록은 최소 개, 최대 개의 항목을 포함한다. 이메일 주소와 (이름, 성) 쌍은 각 목록 안에서 유일하다.
출력
프로그램은 각 목록에서 다른 목록과 매칭되지 않은 레코드를 줄 단위로 출력한다. 먼저 매칭되지 않은 중앙 ICPC 등록 레코드를 한 줄에 하나씩 출력한다. 각 줄은 문자 "I", 공백 하나, 이메일 주소, 공백 하나, 성, 공백 하나, 이름 순서로 이루어진다. 이 레코드들은 이메일 주소의 사전순으로 출력한다. 이메일 주소, 성, 이름은 입력에 나타난 그대로 출력한다. 이러한 레코드를 모두 출력한 뒤, 매칭되지 않은 외부 애플리케이션 레코드를 같은 방식으로 출력하되 각 줄은 문자 "O"로 시작한다.
모든 레코드 비교와 정렬에서 대소문자는 무시한다.
각 시스템의 모든 레코드가 다른 시스템에서 매칭을 가지면, 프로그램은 문자열 "No mismatches."만 포함한 줄을 출력한다.