텍스트 정식화

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

요약
텍스트에서 모든 축약형을 펼치고 각 약어는 처음 등장할 때만 확장하며, 대소문자 규칙과 가장 먼저 시작하는 위치를 기준으로 우선순위를 정합니다.
난이도

보통10점 중 5점

유형
문자열, 문자열 매칭, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

지미는 글에 쓰인 표현을 더 격식 있는 형태로 고치는 일을 맡고 있다. 이 작업에는 축약 표현을 풀어 쓰고, 일부 약어는 처음 등장할 때 원래 이름을 함께 적어 주는 일이 포함된다.

영어의 축약 표현은 더 긴 구나 문장에서 일부 소리나 글자를 줄이거나 합쳐 만든 단어 또는 구이다. 예를 들어 "don't"는 "do not"의 축약 표현이고, "o'clock"은 "of the clock"에서 온 표현이다.

약어는 이름을 이루는 단어들의 첫 글자나 여러 단어의 일부를 합쳐 만든 글자열 또는 단어이다. 예를 들어 "ACM"은 "Association for Computing Machinery"를 줄인 말이고, "radar"는 "radio detecting and ranging"에서 온 말이다.

축약 표현 목록과 약어 목록, 그리고 여러 개의 글이 주어진다. 각 글에서 모든 축약 표현을 풀어 쓰고, 각 글마다 약어의 첫 번째 등장만 확장하여 출력하라.

입력

첫 줄에는 두 정수 C < 50, A < 50이 주어진다. C는 풀어 써야 할 축약 표현의 개수이고, A는 처리해야 할 약어의 개수이다.

다음 C개의 줄에는 축약 표현과 그 격식 있는 표현이 주어진다. 이어지는 A개의 줄에는 약어와 그 확장이 한 줄에 하나씩 주어진다. 축약 표현과 약어는 모두 다음 형식으로 주어진다.

"contraction or acronym" -> "expansion"

축약 표현, 약어, 확장 표현에는 공백이 포함될 수 있으므로 양쪽 모두 큰따옴표로 둘러싸인다. 각 문자열의 길이는 80자를 넘지 않는다.

그 뒤에는 확장해야 할 글들이 이어진다. 각 글은 길이가 80자를 넘지 않는 여러 줄로 이루어지며, 어떤 축약 표현이나 약어도 두 줄에 걸쳐 나뉘지 않는다. 하나의 글은 문자 # 하나만 있는 줄로 끝난다.

출력

필요한 확장을 제외하고 각 글을 입력과 같은 형태로 출력한다. 각 글을 끝내는 # 줄도 출력해야 한다.

모든 축약 표현은 전부 확장해야 한다. 축약 표현은 목록에 적힌 형태 그대로, 전체 대문자 형태, 또는 첫 글자만 대문자이고 나머지는 목록에 적힌 그대로인 형태로 나타날 수 있다. 확장 표현도 같은 대소문자 규칙을 따른다. 둘 이상의 규칙이 동시에 맞으면 목록에 적힌 형태, 전체 대문자, 첫 글자만 대문자 순서로 먼저 맞는 규칙을 사용한다.

약어는 이름을 이해하고 식별하는 데 도움이 되므로 각 글에서 첫 번째 등장만 바꾼다. 약어는 대소문자가 정확히 일치해야만 등장한 것으로 본다. 약어를 바꿀 때는 확장 표현을 출력한 뒤 공백 하나와 괄호 안의 원래 약어를 붙인다.

여러 축약 표현 또는 약어가 적용될 수 있다면 글에서 더 앞에서 시작하는 것을 사용한다. 같은 위치에서 여러 항목이 시작한다면 입력 목록에서 더 먼저 나온 항목을 사용한다.

예제1

  1. 예제 1

    입력
    3 2
    "doesn't" -> "does not"
    "isn't" -> "is not"
    "can't" -> "cannot"
    "ACM" -> "Association for Computing Machinery"
    "CS" -> "Computing Science"
    The ACM can't solve
    all the problems in CS. Though large and having
    many resources at its disposal, the ACM doesn't use magic. Magic isn't
    part of science, and hence not part of CS. Thank you for your
    suggestions.
    Signed,
    
    ACM
    #
    The ACM doesn't like magic.
    It's not that the ACM won't use it, it's
    just that the ACM doesn't understand magic.
    #
    
    예상 출력
    The Association for Computing Machinery (ACM) cannot solve
    all the problems in Computing Science (CS). Though large and having
    many resources at its disposal, the ACM does not use magic. Magic is not
    part of science, and hence not part of CS. Thank you for your
    suggestions.
    Signed,
    
    ACM
    #
    The Association for Computing Machinery (ACM) does not like magic.
    It's not that the ACM won't use it, it's
    just that the ACM does not understand magic.
    #