𝘼𝙣𝙖𝙡𝙮𝙨𝙞𝙨/ᴀʟɢᴏʀɪᴛʜᴍ

[Python] 짝지어 제거하기 (deque)

콜라맛갈비 2024. 3. 11. 20:23
728x90

 

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

 

프로그래머스

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

programmers.co.kr

 

 

def solution(s):
    s_list = list(s)
    
    for j in range(len(s_list)//2) :
        for i in range(len(s_list)-1) :
            if s_list[i] == s_list[i+1] :
                s_list.pop(i)
                s_list.pop(i)
                break
    if len(s_list) == 0 :
        return 1
    
    return 0

시간초과 에러뜸!

 

인덱싱 방식은 오래걸려서

스택/데큐 사용할 필요 있음!

 

 

from collections import deque

def solution(s):
    dq = deque()
    
    for i in s :
        dq.append(i)
        if len(dq) >= 2 :
            cur = dq.pop()
            pre = dq.pop()
            if cur != pre :
                dq.append(pre)
                dq.append(cur)
    
    if len(dq) == 0 :
        return 1
    
    return 0

 

 

 

def solution(s):
    tmp = []
    for x in s:
        tmp.append(x)
        if len(tmp) > 1 and tmp[-1] == tmp[-2]:
            tmp.pop()
            tmp.pop()

    if len(tmp) == 0:
        return 1
    else:
        return 0

더 간단한 풀이를 찾았다.

 

if문을 합쳐서 조건 맞을 경우만 pop해서 뽑기! 

 

728x90