본문 바로가기
백준

[백준] 9935번 : 문자열 폭발 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2024. 9. 9.
728x90
반응형

 

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

 

1. 문제 설명

반응형

2. 풀이과정

해당 문제는 폭발 문자열이 문자열에 없을 때까지 반복하며 최종적으로 남은 문자열을 출력하는 문제이다.

만약 남은 문자열이 없으면 FRILA를 출력한다.

스택 자료구조를 활용하여 전체 문자열에서 문자를 하나씩 가져오며 스택 자료구조에 추가한 뒤, 스택 자료구조에서 폭발 문자열의 길이만큼의 마지막 부분을 확인하여 폭발 문자열과 일치하면 해당 문자열을 제거한다.

전체 문자열에서 각 문자를 하나씩 가져오며 매번 폭발 문자열이 있는지 확인할 것이기 때문에 늘 마지막 부분만 확인하여 제거해 주면 된다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 전체 문자열을 입력받는다. st = sys.stdin.readline().rstrip()
  3. 폭발 문자열을 입력받는다. bump = sys.stdin.readline().rstrip()
  4. 남은 문자열을 저장할 스택 자료구조를 생성한다. stack = list()
  5. 전체 문자열의 각 문자를 하나씩 가져오며 for c in st
    1. 스택 자료구조에 추가한다. stack.append(c)
    2. 스택 자료구조에서 폭발 문자열의 길이만큼의 마지막 부분을 확인하여 폭발 문자열과 일치하면 해당 문자열을 스택 자료구조에서 삭제한다. if (''.join(stack[-len(bump) : ]) == bump): for _ in range(len(bump)): stack.pop()
  6. 만약 남은 문자열이 없으면 FRULA를 출력한다. if (len(stack) == 0): print('FRULA')
  7. 반면에 남은 문자열이 있으면 남은 문자열을 출력한다. else: print(''.join(stack))
728x90

3. 소스코드

import sys

st = sys.stdin.readline().rstrip()
bump = sys.stdin.readline().rstrip()

stack = list()
for c in st:
    stack.append(c)

    if (''.join(stack[-len(bump) : ]) == bump):
        for _ in range(len(bump)):
            stack.pop()

if (len(stack) == 0):
    print('FRULA')
else:
    print(''.join(stack))
728x90
반응형