😁 빅데이터 문제 풀기 & Study/- BAEKJOON 문제

[3447] 버그왕 / 파이썬 ( 파이썬 방법으로 풀 수 있습니다!ㅠㅠ 유레카)

또방91 2021. 12. 5. 15:49
728x90

 

 

 

 

 

 

 

 

문제 링크: https://www.acmicpc.net/problem/3447

 

3447번: 버그왕

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

www.acmicpc.net

아무리 구글링해봐도 def로 정의해서 엄청 복잡한 식으로 풀었던데 드디어 간단하게 몇줄로 풀었습니다.....ㅠ


1~2차시도 실패

1
2
3
import re
code=input()
print(re.sub('BUG','',code))
cs

요딴 간단한거 아님... 여러 줄을 받아와야하니까! 또 BUG가 남아있으면 안되니까

 


정답은 ??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys 
import re
code=sys.stdin.readlines() #여러 줄을 정답으로 받고
 
for i in code: #한 줄씩 검사하기
    
    while True:
        result=re.sub('BUG','',i) #BUG가 들어있으면 없애기
        
        #ABUBUGGB와 같은 경우는 AB가 되어야 하니까 while반복문으로 검사
        if 'BUG' in result: #있으면 한번 제거한 결과를 가지고 또 검사하도록
            i= result
        else
            print(result,end=""#줄바꿈까지 같이 출력되니까 end=""써주기
            break
cs

설명때문에 예쁘게 보여주려고 좀 길어보이는데, 실제로는 10줄로 문제풀이 끝.... 

 

설명 없애보자면 

1
2
3
4
5
6
7
8
9
10
import sys 
import re
code=sys.stdin.readlines()
for i in code:     
    while True:
        result=re.sub('BUG','',i)         
        if 'BUG' in result: i= result
        else
            print(result,end=""
            break
cs

 


💯 풀이 과정

# 이 문제의 포인트는 여러 줄로 받기, 반복해서 BUG있는 찾기라고 생각한다...

1) 여러 줄을 받기위한 readlines( )를 위해 sys와 // 대체정규표현식 sub를 위해 re를 import!!

2) 여러 줄을 입력받기 때문에 입력 받은 것을 한 줄씩 살펴보기 위해 반복문 사용했다. 

3) 한줄 씩 i로 받아서 살펴볼텐데, re.sub(찾을값, 대체값, 살펴볼 대상) 정규표현식을 이용한다.

4) re.sub('BUG','',i) 풀이하자면 BUG를 없앨거고(작은 따옴표사이에 아무것도 없음) i에서 찾을거라는 뜻

5) 여기서 #ABUBUGGB와 같은 경우는 AB가 되어야 하니까 이거는 2번에 걸쳐 BUG를 없애서 AB가 된 경우! 즉! BUG가 안에 들어있으면 검사계속 한 후 없애줘야함

6) 안에 BUG 없다고 하면 출력하고 break


😎오늘의 한줄평: 유레카! 많은 이들에게 도움이 되길!!💗💗💗

 

 

 

 

728x90