코딩테스트 연습 > 2017 팁스타운 > 짝지어 제거하기

문제

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

핵심 개념

스택

이런식으로 데이터를 넣어줍니다. 왜 이걸 쓰냐면 메모리를 효율적으로 쓰기 위해서 입니다. 지금 이 문제에서 우리는 주어진 문자열을 모두 알 필요가 없습니다.

문제를 잘 이해해 본다면 우리는 지금까지 처리되지 못한 문자와 다음 문자만 알면 됩니다. 코드로 구현하면 다음과 같이 됩니다.

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

처음에 스택에는 아무것도 들어있지 않습니다. 하지만 위에 있는 그림처럼 우리는 문자를 하나씩 넣어줍니다 (append를 push로 이해하면 될 것 같습니다!).
이러한 상황에서 if 새로 들어올 친구가 맨 위에 있는 스택과 같다면 스택을 pop하게 됩니다.

코드

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

도움이 되었기를 바라면서 글을 마치겠습니다.

좋은 웹페이지 즐겨찾기