[코테] 스택 - 짝지어 제거하기[프로그래머스]

Bpius·2023년 6월 22일
0

알고리즘 문제풀이

목록 보기
27/28
post-thumbnail

문제

출처: 프로그래머스 - 짝지어 제거하기

풀이

s의 길이가 최대 1백만이기에 탐색을 위해 반복문을 2번 이상 반복하게 되면 시간초과가 된다.
1번의 탐색으로 result의 결과를 확인할 수 있어야 한다.

연속으로 같은 문자가 2개 붙어 있을 때 제거를 해주는 방법으로 s를 순차적으로 반복문을 진행하면서 stack 자료구조에 넣는다.
stack에 쌓기 전에 조건문으로, stack가 비었는지 아니면 비어있지 않다면 stack의 마지막 문자와 s 반복문의 문자가 같을 때 stack의 마지막 문자를 제거한다. stack의 마지막 문자와 s 반복문의 문자가 같지 않다면 다음 반복문으로 그냥 stack에 쌓아서 다음 반복문에서 삭제할 수 있다면 삭제되도록 stack에 쌓아준다.

s 반복문을 다 진행한 후, stack가 비었다면 모두 제거한 것이므로 1을 아니라면 0을 반환하도록 한다.

코드

def solution(s):
    stack = []

    for i in s: # 1번의 반복문
        if not stack: # 조건문 1
            stack.append(i)
            print(stack)
        elif stack[-1] == i: # 조건문 2
            stack.pop()
        else: # 조건문 3
            stack.append(i)
	# 결과
    if not stack:
        return 1
    else:
        return 0
profile
데이터 굽는 타자기

0개의 댓글