단계별로 풀어보기 스택 2에 있는 문자열 폭발이다.
문제 조건에서 알 수 있듯이, 폭발 문자열이 사라질 때까지 폭발 문자열을 삭제해주면 된다.
1. 아이디어
python replace를 쓰니까 광탈...
직접 replace를 구현해줄 방법이 있을까?
->스택사용!
파이썬은 문자열 합치기 기능(join)이 있으므로 구현하기 간단하다.
2. 코드
s = input()
boom = input()
stack = []
m = len(boom)
for i in s:
stack.append(i)
while stack and "".join(stack[-1*m:]) == boom:
if "".join(stack[-1*m:]) == boom:
for j in range(m):
stack.pop()
if stack:
print("".join(stack))
else:
print("FRULA")
원리: stack에 문자를 하나씩 추가해가면서 폭발 문자열을 삭제해준다.
문자열의 길이가 1,000,000보다 작거나 같으므로 시간 복잡도는 이를 넘지 못한다.
O(n)
'PS문제풀이' 카테고리의 다른 글
[그리디 알고리즘]1700-멀티탭 스케줄링 (0) | 2023.07.16 |
---|---|
[스택심화]17298-오큰수 (0) | 2023.07.12 |
그 유명한 N-queen (0) | 2023.07.10 |
백준 1300-K번째수 (0) | 2023.07.09 |
가장 긴 증가하는 부분 수열-2 O(N log N) 알고리즘 (0) | 2023.07.08 |