번역 복원

면접 대비

시간 제한1초메모리 제한128 MB

요약
두 언어로 된 두 단어 구문 목록이 각각 알파벳순으로 주어질 때, 단어 대 단어 일대일 번역 대응을 복원한다. 각 단어와 그 번역을 정렬해 출력한다.
난이도

보통10점 중 6점

유형
그래프, 해시맵, 정렬, 구현
정답자
아직 제출이 없습니다

문제

Bob Roberts는 여러 언어 사이의 문서 번역을 담당한다. 그를 돕기 위해 상사들은 항상 짝으로 이루어진 번역 파일을 준다. 한 파일에는 어떤 언어의 예시 구절들이 들어 있고, 다른 파일에는 그 구절들을 다른 언어로 옮긴 번역이 들어 있다. 그런데 지나치게 열성적인 직원이 모든 파일의 내용을 알파벳순으로 정렬해 버려, 각 구절과 그 번역 사이의 대응 관계가 사라졌다. 다행히 목록이 충분히 완전하여 정렬된 두 목록만으로 원래의 대응을 복원할 수 있다. 특히 모든 구절이 정확히 두 단어로 이루어져 있을 때 이 복원이 잘 된다.

예를 들어 다음 두 목록을 살펴보자.

언어 1 구절언어 2 구절
arlo zymbus seat
flub plevebus stop
pleve dourmhot seat
pleve zymschool bus

이로부터 arlo는 hot, zym은 seat, flub은 school, pleve는 bus, dourm은 stop을 뜻함을 알 수 있다.

번역은 단어 대 단어로 이루어지며 위치가 보존된다. 즉, 언어 1의 각 단어에는 언어 2의 번역이 정확히 하나씩 대응되고, 언어 1의 구절이 x y이면 언어 2의 대응 구절은 f(x) f(y)이다. 여기서 f는 알려지지 않은 단어 대 단어 대응이다. 정렬된 두 목록이 주어질 때 f를 복원하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 언어 각각의 두 단어 구절 개수를 나타내는 양의 정수 nn (1≤n≤2501 \le n \le 250)이 적힌 줄로 시작한다. 이어지는 nn개의 줄에는 첫 번째 언어의 구절이 알파벳순으로 한 줄에 하나씩 주어지고, 그다음 nn개의 줄에는 두 번째 언어의 구절이 알파벳순으로 한 줄에 하나씩 주어진다. 각 구절은 공백 하나로 구분된 두 단어로 이루어지며, 모든 단어는 대문자와 소문자 알파벳만을 사용한다.

하나의 테스트 케이스에는 서로 다른 단어가 최대 25개까지 나온다. 한 언어에서 어떤 단어도 10개를 초과하는 구절의 첫 단어가 되지 않으며, 마찬가지로 어떤 단어도 10개를 초과하는 구절의 마지막 단어가 되지 않는다. 마지막 테스트 케이스 다음에는 0 하나만 적힌 줄이 오며, 이는 입력의 끝을 나타낸다.

출력

각 테스트 케이스마다, 첫 번째 언어의 서로 다른 모든 단어에 대해 다음 형식의 줄을 출력한다.

word1/word2

여기서 word2는 word1의 두 번째 언어 번역이며, 두 단어는 슬래시 하나로 구분된다. 줄들은 첫 번째 언어 단어를 기준으로 정렬하고, 각 첫 번째 언어 단어는 정확히 한 번씩만 출력한다. 출력에는 공백이 전혀 없어야 한다. 연속한 두 테스트 케이스의 출력 사이는 빈 줄 하나로 구분한다. 각 테스트 케이스에는 유일한 올바른 복원이 존재함이 보장된다.

예제4

  1. 예제 1

    입력
    4
    arlo zym
    flub pleve
    pleve dourm
    pleve zym
    bus seat
    bus stop
    hot seat
    school bus
    2
    iv otas
    otas re
    ec t
    eg ec
    0
    
    예상 출력
    arlo/hot
    dourm/stop
    flub/school
    pleve/bus
    zym/seat
    
    iv/eg
    otas/ec
    re/t
    
  2. 예제 2

    입력
    1
    a b
    x y
    0
    
    예상 출력
    a/x
    b/y
    
  3. 예제 3

    입력
    2
    a b
    b c
    x y
    y z
    0
    
    예상 출력
    a/x
    b/y
    c/z
    
  4. 예제 4

    입력
    3
    cat dog
    cat fish
    dog bird
    dos cuatro
    uno dos
    uno tres
    0
    
    예상 출력
    bird/cuatro
    cat/uno
    dog/dos
    fish/tres