CodingTest/Baekjoon

[baekjoon] 백준 9935번(파이썬): 문자열 폭발

JunJangE 2021. 10. 7. 10:47

문제

 

9935번: 문자열 폭발

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

www.acmicpc.net

알고리즘

- 반복문을 통해 문자열을 확인한다.

- 스택에 문자를 하나씩 추가한다.

- 스택의 마지막 요소와 폭발 문자열의 마지막 요소가 같고 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열과 폭발 문자열이 같으면 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열을 제거한다.

코드

import sys

s = str(sys.stdin.readline().strip())
bomb = str(sys.stdin.readline().strip())
stack = []

# 반복문을 통해 문자열을 확인한다.
for i in s:
    # 스택에 문자를 추가한다.
    stack.append(i)

    # 스택의 마지막 요소와 폭발 문자열의 마지막 요소가 같고
    # 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열과 폭발 문자열이 같으면
    # 스택의 맨 뒤에 폭발 문자열 길이만큼 짜른 것의 문자열을 제거한다.
    if stack[-1] == bomb[-1] and "".join(stack[-len(bomb):]) == bomb:
        del stack[-len(bomb):]

# 스택이 남아있으면 남은 스택을 출력
if stack:
    print("".join(stack))

# 그렇지 않다면 "FRULA" 출력
else:
    print("FRULA")

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com