티스토리 뷰

ALGORITHM/BOJ

[백준] 문자열 폭발

뚜비두빱 2021. 11. 8. 00:15

https://www.acmicpc.net/problem/9935

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net

 

문자열을 뿌요뿌요처럼 문자열안에 특정 문자열이 나올 경우에 폭발 시키는 문제입니다.

처음에는 반복문으로 문자열.find(찾을문자열)로 문자열을 지워주는 방법으로 했는데 이 방법은 시간초과가 걸린다.

find의 시간복잡도는 O(n)이기 때문에 반복적으로 find를 돌리면 시간이 오래 걸린다.

stack을 이용하면 문자열을 한번만 돌며 해결을 할 수 있다.

 

def boom(s, bomb):
    stack = []
    for i in s:
        stack.append(i)
        if "".join(stack[-len(bomb):]) == bomb:
            del stack[-len(bomb):]
    return "".join(stack) if len(stack) != 0 else "FRULA"

s = input()
bomb = input()
print(boom(s,bomb))

'ALGORITHM > BOJ' 카테고리의 다른 글

[백준] 1339 단어 수학  (0) 2021.12.26
백준 1259 팰린드롬수.py  (0) 2021.12.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함