티스토리 뷰
https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
문자열을 뿌요뿌요처럼 문자열안에 특정 문자열이 나올 경우에 폭발 시키는 문제입니다.
처음에는 반복문으로 문자열.find(찾을문자열)로 문자열을 지워주는 방법으로 했는데 이 방법은 시간초과가 걸린다.
find의 시간복잡도는 O(n)이기 때문에 반복적으로 find를 돌리면 시간이 오래 걸린다.
stack을 이용하면 문자열을 한번만 돌며 해결을 할 수 있다.
def boom(s, bomb):
stack = []
for i in s:
stack.append(i)
if "".join(stack[-len(bomb):]) == bomb:
del stack[-len(bomb):]
return "".join(stack) if len(stack) != 0 else "FRULA"
s = input()
bomb = input()
print(boom(s,bomb))
'ALGORITHM > BOJ' 카테고리의 다른 글
[백준] 1339 단어 수학 (0) | 2021.12.26 |
---|---|
백준 1259 팰린드롬수.py (0) | 2021.12.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- stdout
- dfs
- for-else
- Python
- conTeXt
- query
- 프로그래머스
- go
- 방금그곡
- Two Scoops of Django
- 팰린드롬수
- 파이썬
- leetcode
- go context
- sql lite
- django
- 독후감
- ManyToMany
- 의대 신경학 강의
- 백준
- gunicorn
- taggit
- 문자열 뒤집기
- 소프트웨어 장인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함