프로그래머스

[프로그래머스] 짝지어 제거하기 (파이썬)

sami355 2023. 3. 31. 00:39

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12973

 

프로그래머스

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

programmers.co.kr

설명

 처음 접근을 문자열로 하여 분기처리를 하는등 어렵게 접근하였던 문제였다. 하지만 이 문제는 짝을 맞추는 문제고 이는 스택을 이용하면 비교적 쉽게 풀린다는 장점이 존재한다. 여기까지 생각이 다다른다면 이 다음은 단순 구현이다.

 

 먼저 문제를 문자열을 차례차례 스택에 넣고 만약 스택의 가장 위에 존재하는 원소가 문자열에서 가르키고 있는 원소와 동일하다면 pop을 하고 아니면 append를 하면 된다.

 

코드

def solution(s):

    st = []
    st.append(s[0])
    
    for c in s[1:]:
        if not st:
            st.append(c)
        
        elif st[-1] == c:
            st.pop()
        elif not st[-1] == c:
            st.append(c)
            
    if st:
        return 0
    return 1