๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 9935๋ฒˆ_๋ฌธ์ž์—ด ํญ๋ฐœ

Dbswnstjd 2023. 4. 3. 11:39

๋ฌธ์ œ

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

 

9935๋ฒˆ: ๋ฌธ์ž์—ด ํญ๋ฐœ

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋‘˜์งธ ์ค„์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 36๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋‘ ๋ฌธ์ž์—ด์€ ๋ชจ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 9935๋ฒˆ ๋ฌธ์ œ - ๋ฌธ์ž์—ด ํญ๋ฐœ
import sys
input = sys.stdin.readline
# ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ
s = input().rstrip()
bomb = input().rstrip()

# stack์œผ๋กœ ๋ฌธ์ž์—ด ํญ๋ฐœ ๊ตฌํ˜„
stack = []
bomb_length = len(bomb)

for char in s:
    stack.append(char)
    if ''.join(stack[-bomb_length:]) == bomb:
        for _ in range(bomb_length):
            stack.pop()

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ
if stack:
    print(''.join(stack))
else:
    print('FRULA')

๋ฌธ์ž์—ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด O(n^2) ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐ์„ ํ•˜์˜€๋‹ค.