always_here

지식을 공유하고 함께 성장하는 엔지니어 as_always 입니다

AS_ALWAYS

알고리즘

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

nauung_always 2022. 7. 20. 21:21
728x90

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

 

프로그래머스

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

programmers.co.kr

문자열 S = baabaa 라면 b aa baa → bb aa → aa → 모두 제거 완료

기존 아이디어. 

While True 반복문 속에서
현 위치의 문자와 다음에 이어서 오는 문자가 같다면 pop()을 두번 진행한다. 

-> 시간 초과 오류가 계속 발생

해당 문자열 길이만큼만 for문을 돌면서 stack에 문자를 하나씩 추가한다. 
stack에 마지막에 들어간 문자와 stack에 추가할 문자가 같다면 pop() 하고 추가하지 않는다.

전체 코드

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