문제 링크
https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
풀이
- stack 사용하여 풀이
- 문자를 stack에 하나씩 삽입
만약 stack의 가장 최근에 들어간 문자와 폭발 문자열의 마지막 문자가 같고, 스택의 길이가 폭발 문자열의 길이보다 길거나 같다면
폭발 문자열의 길이만큼 stack 확인
stack에 폭발 문자열이 있다면 폭발 문자열의 길이만큼 스택에서 문자 제거
stack에 남아있다면, stack 출력
없다면 FRULA 출력
s = list(map(str,input()))
expo = list(map(str,input()))
stack = []
for i in range(len(s)):
stack.append(s[i])
# 스택의 마지막 문자와 폭발 문자열의 마지막 문자가 같고, 스택의 길이가 폭발 문자열의 길이보다 길다면
if stack[-1] == expo[-1] and len(stack) >= len(expo):
# 스택에 폭발 문자열 있는지 확인
if stack[-len(expo):] == expo:
# 폭발 문자열이 있다면 폭발 문자열의 길이만큼 스택에서 문자 제거
for _ in range(len(expo)):
stack.pop()
if stack :
print("".join(stack))
else:
print("FRULA")
'개발 > algorithm' 카테고리의 다른 글
[백준 1167번] 트리의 지름 - python (0) | 2022.03.11 |
---|---|
[백준 14938번] 서강 그라운드 - python (0) | 2022.03.11 |
[백준 2096번] 내려가기 - python (0) | 2022.03.11 |
[백준 1043번] 거짓말 - python (0) | 2022.03.11 |
[백준 1967번] 트리의 지름 - python (0) | 2022.03.11 |