본문 바로가기

알고리즘/백준

[백준] 9935번 : 문자열 폭발

728x90

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

해당 문제를 처음에는 파이썬 내장함수로 문제를 풀었지만, 시간복잡도가 o(n^2)으로 시간초과가 발생한다. 해당 문제를 해결하기 위해서 스택 자료구조 를 활용하여 O(n)으로 문제를 풀 수 있다.

 

개선 이전 ( 내장함수 in , replace 함수 사용 )

char = input()
bumpchar = input()
while bumpchar in char:
    char = char.replace(bumpchar, "")
    
if char == "":
    print("FRULA")
else:
    print(char)

이후 개선 코드 ( 스택 자료구조 사용 )

char = input()
bumpchar = input()
length = len(bumpchar)
stack = []
for i in range(len(char)):
    stack.append(char[i])
    if bumpchar == ''.join(stack[-length:]):
        for _ in range(length):
            stack.pop()

newstr = ''.join(stack)
if newstr == "":
    print("FRULA")
else:
    print(newstr)
728x90