title: "[프로그래머스] 짝지어 제거하기 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/12973"
description: "프로그래머스 Level 2 문제 [짝지어 제거하기]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(s):
    # stack과 pointer 하나씩을 관리합니다.
    # stack은 지금까지 처리된 문자열, pointer는 해당 문자열의 맨 뒤 문자의 인덱스를 나타냅니다.
    stack, ptr = [], -1
    
    # 문자열을 하나씩 읽어가면서, stack에 추가합니다.
    for char in s:
        # 다만, 추가하기 전에, 지금 stack의 맨 뒤 문자와 해당 문자가 같으면
        # stack에서 하나를 pop하고, pointer는 한칸 뒤로 무릅니다.
        # 그리고 다음 문자를 확인하러 넘어갑니다.
        if ptr != -1 and stack[ptr] == char:
            stack.pop()
            ptr -= 1
            continue
        # 만약 문자열 짝짓기가 안 됐다면, stack에 해당 문자를 추가하고
        # ptr를 하나 앞으로 전진합니다.
        stack.append(char)
        ptr += 1
        
    # stack의 크기가 0이어야 수행 가능입니다.
    return int(len(stack) == 0)

출처

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