본문 바로가기
카테고리 없음

[프로그래머스/2단계/파이썬(Python3)] 짝지어 제거하기

by 빅데이터1020 2021. 6. 27.
SMALL

 

문제 출처

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

 

풀이 코드 (시간초과가 나고 효율성에서 통과 못함)

def solution(s):
    words=['qq','ww','ee','rr','tt','yy','uu','ii','oo','pp','aa','ss','dd','ff','gg','hh','jj','kk','ll',
          'zz','xx','cc','vv','bb','nn','mm']
    while True:
        for word in words:
            s=s.replace(word,'')
        if len(s)==0:
            return 1
        
        a=0
        for word in words:
            if word not in s:
                a +=1
        if a == 26:
            return 0

효율성 통과하려면 다른 방식으로 접근해야함

자료 구조 중에 넣었다 뺐다 하는 스택으로 접근하기로 결정!

 

풀이 코드 (정답)

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