Python/코딩테스트

[프로그래머스/python] 코딩테스트 연습 Lv.2 짝지어 제거하기

김과분 2023. 12. 28. 15:59
728x90

문제

 

 

입출력 예

 

 

실패 (시간초과)

def solution(s):
    s = list(s)
    tmp = s[:]
    while True:
        for i in range(1, len(s)):
            if s[i-1] == s[i]:
                del s[i-1:i+1]
                break
        if len(s) == 0:
            return 1
        elif tmp == s:
            return 0

 

이중 반복문 때문인 것 같다.

 

Solution

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

 

stack 개념을 이용하여 푼다.

 

ex) baabaa

순서 비교 comp = []
1 X b
2 b != a ba
3 a == a b
4 b == b X
5 X a
6 a == a X

 

len(comp) == 0 -> return 1

728x90