본문 바로가기

Algorithm/프로그래머스 연습 문제

프로그래머스 / 코딩 테스트 / 짝지어 제거하기

문제 설명

 

 

문제 해결

 

이중반복문을 이용하여 해결해볼까 고민했지만 stack의 후입선출 이용하여 문제를 해결할 수 있겠다고 판단했다.

일단 스택에 데이터는 쌓아줘야 하니 비어있을 때 데이터를 쌓을 수 있도록 조건을 정해주고

쌓인 데이터와 이번에 추가하려는 데이터를 비교하여 같다면 같은 글자이니 제거해주고

다르다면 스택에 추가해준다.

반복문을 다돌고나서 스택에 데이터가 남아있다면 작업이 실패했으므로 0 반대의 경우라면 1을 반환해주면된다.

 

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

def solution(s):
    answer = solve(s)

    return answer