๋ฐ์ํ
๐ฑ ๋ฌธ์
๐ฑ ํ์ด
1. ์ ๋ ฅ ๋ฐ๊ธฐ
str = deque(list((input().strip())))
bomb = list(input().strip())
์ ์ฒด ๋ฌธ์์ด๊ณผ ํญ๋ฐ ๋ฌธ์์ด์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ต๋๋ค. ๋น ๋ฅธ pop์ฐ์ฐ์ ์ํด์ ์ ์ฒด ๋ฌธ์์ด์ queue๋ก ๋ฐ๊ฟ์ค๋๋ค.
2. ๋ณ์ ์ด๊ธฐํ
stack = []
stack
์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ ๋ณ์์
๋๋ค.
3. ์คํ๊ณผ ํ ์ฌ์ฉ
while str:
ch = str.popleft()
stack.append(ch)
if ch == bomb[-1] and stack[-len(bomb):] == bomb:
for i in range(len(bomb)):
stack.pop()
- ์ ์ฒด ๋ฌธ์์ด์ ์์์๋ถํฐ ํ๋์ฉ popํด์
stack
์ ๋ฃ์ต๋๋ค. - popํ ๋ฌธ์๊ฐ ํญ๋ฐ ๋ฌธ์์ด์ ๋ ๋ฌธ์์ ๊ฐ๋ค๋ฉด, ํ์ฌ ์คํ์ ๋ค์ด๊ฐ ์๋ ๋ฌธ์์ด์ ๋์ ํญ๋ฐ ๋ฌธ์์ด์ด ์๋์ง ๊ฒ์ฌํฉ๋๋ค. ํญ๋ฐ ๋ฌธ์์ด์ด ์๋ค๋ฉด ํญ๋ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ
stack
์์ ๋ฌธ์๋ฅผ popํฉ๋๋ค.
์ด๋, ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ(stack = stack[:-len(bomb)])
์ ์ด์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฉ๋๋ค. ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ๋ณด๋ค pop ์ฐ์ฐ์ด ์๊ฐ ๋ณต์ก๋๊ฐ ํจ์ฌ ๋ฎ์ต๋๋ค. - ํญ๋ฐ ๋ฌธ์์ด๊ณผ ๋ ๋ฌธ์๋ฅผ ๋น๊ตํ๋ ์ด์ ๋, ํญ๋ฐ ํ, ํญ๋ฐ ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ถ๋ถ์ด ์๋กญ๊ฒ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
4. ์ถ๋ ฅ
if not stack:
print("FRULA")
else:
print(''.join(stack))
- ๋ง์ฝ,
stack
์ ๋จ์์๋ ๋ฌธ์๊ฐ ์๋ค๋ฉด, ๋ชจ๋ ๋ฌธ์์ด์ด ํญ๋ฐํ ๊ฒ์ด๋ฏ๋ก "FRULA"๋ฅผ ์ถ๋ ฅํฉ๋๋ค. - ๊ทธ๋ ์ง ์๋ค๋ฉด
stack
์ ์๋ ๋ฌธ์์ด์ joinํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
๐ฑ ์ ๋ต ์ฝ๋
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# boj 9935 ๋ฌธ์์ด ํญ๋ฐ
import sys
from collections import defaultdict
from collections import deque
input = sys.stdin.readline
str = deque(list((input().strip())))
stack = []
bomb = list(input().strip())
check = True
while str:
ch = str.popleft()
stack.append(ch)
if ch == bomb[-1] and stack[-len(bomb):] == bomb:
for i in range(len(bomb)):
stack.pop()
if not stack:
print("FRULA")
else:
print(''.join(stack))
๋ฐ์ํ
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #18405 ๊ฒฝ์์ ์ ์ผ (Python) (0) | 2023.02.15 |
---|---|
[BOJ] #2230 ์ ๊ณ ๋ฅด๊ธฐ (Python) (0) | 2023.02.14 |
[BOJ] #2473 ์ธ ์ฉ์ก (Python) (0) | 2023.02.13 |
[BOJ] #2470 ๋ ์ฉ์ก (Python) (0) | 2023.02.13 |
[BOJ] #2178 ๋ฏธ๋ก ํ์ (BFS, Python) (0) | 2023.02.10 |
๋๊ธ