Baekjoon 9935.py [문자열 폭발]
내 풀이
import sys
input = sys.stdin.readline
word = input().rstrip()
bomb = input().rstrip()
stk = []
lw, lb = len(word), len(bomb)
for i in word:
stk.append(i)
if len(stk) >= lb and ('').join(stk[-lb:]) == bomb:
for _ in range(lb):
stk.pop()
if stk:
print(('').join(stk))
else:
print('FRULA')
풀이 복기
아무리 생각해도 풀이방법이 생각안나서 알고리즘 분류에서 스택을 사용하는걸 확인했다. 스택을 보자마자 풀이가 생각나서 풀었다.
문자를 하나씩 스택에 넣으면서 마지막 문자가 폭발문자면 그 길이만큼 pop()
했다.
다른 풀이를 보며
if len(stk) >= lb and ('').join(stk[-lb:]) == bomb:
위 조건문에서 len(stk) >= lb
는 없어도 되는거라 빼는게 좋음.
if i == lastChar and ('').join(stack[-length:]) == bomb:
and
를 사용했기때문에 조건문을 이런식으로 바꾸는게 더 효율적이다.
앞 조건을 확인하고 아니면 넘어가기때문에 뒤 조건인 ('').join(stack[-length:]) == bomb:
는 확인하지 않는 경우가 더 많아진다.
시간이 훨씬 짧아진걸 확인할 수 있다.
꼭 필요한 조건이 아니면 넣지말고, 시간이 짧게걸리는 조건문을 활용하자.
Author And Source
이 문제에 관하여(Baekjoon 9935.py [문자열 폭발]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hohooodo/Baekjoon-9935.py-문자열-폭발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)