[프로그래머스 LV.2] 짝지어 제거하기

문제 풀이

전형적인 스택 문제입니다.

원본 문자열 S를 deque로 하나씩 나눠주고, q에 S의 첫번째 요소를 넣고 S의 값이 빌 때 까지 popleft를 하며 q의 마지막에 위치한 요소와 비교를 하면 됩니다. S와 q가 동시에 비어있으면 성공, q에 값이 남아있으면 실패입니다.

풀이 코드

from collections import deque

def solution(s):
    answer = 0
    origin = deque(list(map(str, s))[1:])
    q = [s[0]]
    
    while origin:
        target = origin.popleft()
        
        if q:
            if q[-1] == target:
                q.pop()
            else:
                q.append(target)
        else:
            q.append(target)    
    
    if q:
        return 0
    else:
        return 1
반응형