본문 바로가기
Problem Solving/BOJ

[BOJ][Python]9935 풀이

by NoiB 2023. 8. 27.
반응형

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

s = input()
e = input()
stack = []
for char in s:
    stack.append(char)
    if char == e[-1]:
        if ''.join(stack[-len(e):]) == e:
            for _ in range(len(e)):
                stack.pop()
ans = ''.join(stack)
print(ans if ans != '' else 'FRULA')

예전에 후위표기식 하면서 했던 풀이와 핵심이 같습니다. 근데 기억이 잘 안나더라구요. 오히려 그 때는 못했던 인덱스 조절을 통해서 푸는 방법을 완성해서 풀어봤는데 시간초과가 나서 실패했습니다.

 

문제의 핵심은 전체문자열을 하나씩 돌면서 스택에 저장했다가 폭발 문자열의 마지막 문자와 같은게 나오면 스택의 마지막원소부터 폭발 문자열의 길이만큼 원소를 뽑아서 폭발 문자열과 같은지 비교를 하고 같다면 스택에서 지워버리는 겁니다.

 

지난 번에 풀었던 후위 표기식 문제도 올려드릴테니 같은 핵심 내용을 다른 문제로 연습해보고 싶으신 분은 아래 문제도 풀어보는 것을 추천드립니다.

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

 

1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의

www.acmicpc.net

 

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]11054 풀이  (0) 2023.10.04
[BOJ][Python]10830 풀이  (2) 2023.08.28
[BOJ][Python]5639 풀이  (0) 2023.08.26
[BOJ][Python]2638 풀이  (0) 2023.08.24