[백준] 3447번 버그왕 Java 문제 풀이

2022. 1. 18. 08:17알고리즘/백준

728x90
반응형

문제

버그 투성이 프로그램을 잘 만드는 백준이는 버그를 찾는 프로그램을 만들었다.

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

하지만, 버그를 찾는 프로그램도 백준이가 작성했기 때문에 버그가 있다. 바로, 주석처리하는 대신에 그 부분을 BUG로 바꿔버린다.

버그 찾는 프로그램이 처리한 결과가 주어졌을 때, BUG를 모두 없애는 프로그램을 작성하시오.

입력

입력은 여러 줄의 소스 코드로 이루어져 있다. 이 소스 코드는 백준이가 작성한 버그를 찾는 프로그램으로 이미 처리가 되어있다. 각 줄은 100글자 이내이고, 입력은 파일이 끝날 때 끝난다. 줄의 개수는 따로 제한을 두지 않는다.

출력

입력으로 주어진 소스 코드의 BUG를 모두 제거한 뒤 출력한다. 출력하는 소스 코드에는 BUG가 있으면 안 된다. 즉, ABUBUGGB와 같은 경우는 AB가 되어야 한다.


예제입력1

print "No bugs here..."

void hello() {
BUGBUG
printfBUG("Hello, world!\n");
}

wriBUGBUGtelBUGn("Hello B-U-G");

예제출력1

print "No bugs here..."

void hello() {

printf("Hello, world!\n");
}

writeln("Hello B-U-G");


문제풀이

import java.io.*;
interface Main{
    static void main(String[]a) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    String str = "";
    String regex = ".*BUG.*";
    while((str = br.readLine()) != null){
      while(str.matches(regex)) {
        str = str.replaceAll("BUG", "");
      }
      bw.write(str);
      bw.newLine();
  }
  bw.flush();
  }
}

 BUG라는 단어가 있으면 제거하는 문제입니다.

한 문장에서 BUG를 제거했는데 남은 단어가 BUG로 조합될 경우도 제거해야 합니다.

 

그러므로 반복문 안에 반복문을 하나 더 넣어서 정규식에 매치가 될 경우 계속해서 BUG 단어를 제거하도록 하였습니다.

 

출처 : https://www.acmicpc.net/problem/3447

 

3447번: 버그왕

입력은 여러 줄의 소스 코드로 이루어져 있다. 이 소스 코드는 백준이가 작성한 버그를 찾는 프로그램으로 이미 처리가 되어있다. 각 줄은 100글자 이내이고, 입력은 파일이 끝날 때 끝난다. 줄의

www.acmicpc.net

 

728x90
반응형