문제 링크: 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
😎오늘의 한줄평: 유레카! 많은 이들에게 도움이 되길!!💗💗💗
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[2954] 창영이의 일기장 / 파이썬 ( 4줄이면 끝 ) (0) | 2021.12.06 |
---|---|
[2929] 머신 코드 / 파이썬 (정규표현식) (0) | 2021.12.06 |
[15881] Pen Pineapple Apple Pen / 파이썬 (정규표현식 ) (0) | 2021.12.04 |
[2902] KMP는 왜 KMP일까? / 파이썬 (방법 2가지 반복문 / 정규표현식) (0) | 2021.12.04 |
[2857] FBI / 파이썬 (정규표현식 search) (0) | 2021.12.02 |