자동 편집

면접 대비

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

요약
정해진 찾기-바꾸기 규칙을 순서대로 적용하되, 각 찾기 문자열이 더 이상 나타나지 않을 때까지 텍스트에서 첫 번째 등장을 반복해서 바꾸고 최종 텍스트를 출력한다.
난이도

보통10점 중 4점

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

문제

awk나 sed 같은 텍스트 처리 도구를 사용하면 스크립트에 따라 일련의 편집 작업을 자동으로 수행할 수 있습니다. 이 문제에서는 고정된 규칙 집합에 따라 한 줄의 텍스트 안에서 여러 번의 문자열 치환을 수행하는 경우를 다룹니다. 각 규칙은 아래와 같이 찾을 문자열과, 그것을 바꿀 문자열을 지정합니다.

규칙찾을 문자열바꿀 문자열
1.banbab
2.bababe
3.anaany
4.ba bhind the g

주어진 텍스트를 편집하는 방법은 다음과 같습니다. 첫 번째 규칙부터 시작합니다. 텍스트에서 찾을 문자열이 처음 나타나는 부분을 바꿀 문자열로 치환한 뒤, 바뀐 텍스트에 대해 같은 치환을 다시 시도합니다. 찾을 문자열이 더 이상 텍스트에 나타나지 않을 때까지 반복한 다음, 그 다음 규칙으로 넘어갑니다. 모든 규칙을 처리할 때까지 계속합니다. 다음 사항에 유의하세요. (1) 찾을 문자열을 탐색할 때는 항상 텍스트의 맨 앞에서부터 탐색을 시작합니다. (2) 어떤 규칙의 사용을 마치면(찾을 문자열이 더 이상 나타나지 않아서) 그 규칙은 두 번 다시 사용하지 않습니다. (3) 대소문자를 구분합니다.

예를 들어 다음 줄에서 시작한다고 합시다.

banana boat

위 규칙들을 적용하면 변환 과정은 아래와 같습니다. 찾을 문자열이 나타난 부분은 기울임체로, 치환된 부분은 굵게 표시했습니다. 규칙 1은 두 번, 규칙 2는 한 번, 규칙 3은 0번, 규칙 4는 한 번 사용되었습니다.

변경 전변경 후
banana boatbabana boat
babana boatbababa boat
bababa boatbeba boat
beba boatbehind the goat

입력

입력은 하나 이상의 테스트 케이스로 이루어지며, 그 뒤에 오직 0(영) 하나만 있는 줄이 와서 입력의 끝을 알립니다. 각 테스트 케이스는 규칙의 개수가 적힌 줄로 시작하며, 이 값은 1 이상 10 이하입니다. 각 규칙은 두 줄로 주어지는데, 첫 번째 줄은 찾을 문자열, 두 번째 줄은 바꿀 문자열입니다. 모든 규칙 다음에는 편집할 텍스트가 담긴 줄이 옵니다.

출력

각 테스트 케이스마다 최종적으로 편집된 텍스트를 한 줄에 출력합니다.

힌트

찾을 문자열과 바꿀 문자열의 길이는 모두 최대 80자입니다. 찾을 문자열은 최소 한 글자 이상이지만, 바꿀 문자열은 비어 있을 수 있습니다(입력에서는 빈 줄로 표시됩니다). 편집 과정 중에 텍스트의 길이는 최대 255자까지 커질 수 있지만, 최종 출력 텍스트의 길이는 80자 미만입니다.

첫 번째 예제 테스트 케이스는 위에서 보인 예시에 해당합니다.

예제1

  1. 예제 1

    입력
    4
    ban
    bab
    baba
    be
    ana
    any
    ba b
    hind the g
    banana boat
    1
    t
    sh
    toe or top
    0
    
    예상 출력
    behind the goat
    shoe or shop