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
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 5052번 : 전화번호 목록 (0) | 2023.07.17 |
---|---|
[백준] 5582번 : 공통 부분 문자열 (1) | 2023.07.16 |
[백준] 1932번 : 정수 삼각형 (1) | 2023.07.16 |
[백준] 11660번 : 구간 합 구하기 5 (0) | 2023.07.16 |
[백준] 11057번 : 오르막 수 (0) | 2023.07.16 |