버그왕

면접 대비

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

요약
각 줄에서 "BUG" 문자열을 반복적으로 제거하면서, 제거 후 새로 생기는 "BUG"도 스택 방식으로 처리하여 더 이상 남지 않을 때까지 지우는 문제입니다.
난이도

쉬움10점 중 3점

유형
스택, 문자열
정답자
아직 제출이 없습니다

문제

버그로 가득한 프로그램을 잘 만드는 어떤 프로그래머가, 이번에는 반대로 버그를 찾아 주는 프로그램을 만들었다.

이 프로그램은 소스 코드를 입력으로 받아, 버그를 발견하면 그 부분을 주석 처리해 준다.

그런데 이 버그 검출 프로그램에도 버그가 있었다. 발견한 부분을 주석 처리하는 대신, 그 자리를 문자열 BUG 로 바꿔 버리는 것이다.

버그 검출 프로그램이 처리하고 난 소스 코드가 주어졌을 때, 코드에서 모든 BUG 를 없애는 프로그램을 작성하시오.

입력

입력은 여러 줄의 소스 코드로 이루어져 있다. 이 소스 코드는 위에서 설명한 버그 검출 프로그램이 이미 처리한 상태이다. 각 줄의 길이는 100글자 이하이며, 입력은 파일의 끝(EOF)에서 끝난다. 줄의 개수에는 제한이 없다.

출력

입력으로 주어진 소스 코드에서 모든 BUG 를 제거한 결과를 출력한다. 출력하는 소스 코드에는 BUG 가 하나도 남아 있으면 안 된다.

주의할 점은, BUG 를 지우고 나면 남은 글자들이 서로 붙으면서 새로운 BUG 가 생길 수 있다는 것이다. 이렇게 새로 생긴 BUG 도 모두 없애야 한다. 예를 들어 ABUBUGGB 는 가운데의 BUG 를 지우면 ABUGB 가 되고, 여기서 다시 BUG 를 지우면 최종적으로 AB 가 된다. 즉, 더 이상 BUG 가 남지 않을 때까지 계속 지워야 한다.

줄 구조는 그대로 유지한 채 각 줄에서 BUG 만 제거하며, 어떤 줄의 모든 글자가 지워지면 그 줄은 빈 줄로 남는다.

예제5

  1. 예제 1

    입력
    print "No bugs here..."
    
    void hello() {
    BUGBUG
    printfBUG("Hello, world!\n");
    }
    
    wriBUGBUGtelBUGn("Hello B-U-G");
    
    예상 출력
    print "No bugs here..."
    
    void hello() {
    
    printf("Hello, world!\n");
    }
    
    writeln("Hello B-U-G");
    
  2. 예제 2

    입력
    BUG
    
    예상 출력
    
    
  3. 예제 3

    입력
    ABUBUGGB
    
    예상 출력
    AB
    
  4. 예제 4

    입력
    int bug = 0; // B-U-G is not a bug
    
    예상 출력
    int bug = 0; // B-U-G is not a bug
    
  5. 예제 5

    입력
    BUGhello
    worldBUG
    no_bug_here
    
    예상 출력
    hello
    world
    no_bug_here