👨🏻‍💻알고리즘/프로그래머스

[프로그래머스/Python] Lv2. 짝지어 제거하기

waveofmymind 2023. 3. 7. 19:41

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12973

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

def solution(s):
    stack = []
    for i in range(len(s)):
        if not stack:
            stack.append(s[i])
        else:
            if stack[-1] == s[i]:
                stack.pop()
            else:
                stack.append(s[i])
    if stack:
        return 0
    else:
        return 1

풀이

  • 스택을 이용해서 올바른 괄호 검사 문제를 풀듯이 접근하면 된다.
  • 일단 스택이 비었으면 푸시를 한다.
  • 스택에 값이 있을 경우, 마지막으로 넣은 값과 현재 값을 비교해서 같을 경우 마지막으로 넣은 값을 팝해준다.
  • 팝하는 경우 현재 값을 푸시하지 않고 넘어간다.
  • 비교해서 다를 경우에는 현재 값을 푸시한다.
  • for문이 끝나고 스택에 값이 남아있으면 더이상 제거할 수 있는 문자가 없으므로 0을 리턴하고, 비어있을 경우 1을 리턴한다.