본문 바로가기
알고리즘 풀이/백준

[백준 9935] 문자열 폭발(python)

by char_lie 2023. 2. 15.
반응형

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

문자열 폭발 문제

스택을 활용하여 입력받은 문자열의 겹치는 부분을 제거하는 코드를 작성하는 문제

100% 내 생각으로 풀었는가 ?
→ O

스택만 잘 사용할줄 알면 생각보다 쉽게 풀린 문제!

 

내가 푼 정답코드

import sys
x = list(sys.stdin.readline().strip())
M = list(sys.stdin.readline().strip())
m = len(M)
stack = []
for i in x:
    stack.append(i)
    if stack[len(stack)-m:len(stack)] == M: #스택의 끝부터 M의 글자열 크기까지 자른게 M과 같다면
        for _ in range(m): # m의 길이만큼
            stack.pop() # stack에서 꺼내준다!
if stack:
    print(*stack, sep='')
else:
    print("FRULA")

이게 난이도 골드 4급에 해당하는 문제까진 아닌거 같고, 문제에 주어진 조건 그대로~ 가져다 쓰면 바로 구현에 쉽게 성공한다

반응형

느낀점

골드 수준의 문제를 하나 둘 접하기 시작하면서 느낀 점은 정말 쉬운건 쉽고 정말 어려운건(특히 dp) 손도 못댈 정도로 어려운거 같다. 특히 스택 부분은 그나마 개념이 매우 간단해서 그런가 조금만 생각해내면 쉽게 해결 할 수 있기에 백준 점수 올리기 좋은 문제(?)라고 생각한다

스택의 기본 개념은 이해해서 하나 둘씩 백준를 풀어보고 있지만, 이 문제는 간단했지만, 다른 문제들은 아직 아이디어 떠올리는 거에 어려움이 있다.

골드로 올라온 만큼 더욱 여러 관점에서 생각할 수 있게 다른 사람들의 코드도 계속해서 참고하고 발전하도록 노력해야겠다. 😶😶

반응형

댓글