알고리즘[Python]/프로그래머스

[Lv 2] 짝지어 제거하기

병훈1234 2021. 6. 20. 12:56

- 요소의 개수가 100만개여서 루프를 여러번 돌면서 검사하면 시간초과가 날 것 같았음.

- 따라서 요소를 스택에 넣어두고, 검사하는 요소와 스택의 맨 위 요소가 같다면 스택에서 빼주는 방식으로 구현

- 마지막에 stack이 비어있다면 제거 가능한 문자열이다.

from collections import deque
def solution(s):
    stack = deque()

    for c in s:
        if len(stack) == 0:
            stack.append(c)
        else:
            if stack[-1] == c:
                stack.pop()
            else:
                stack.append(c)

    answer = 0 if stack else 1
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges