프로그래머스 짝지어 제거하기 코드 및 해설 (파이썬)

2021. 6. 2. 02:56algorithm

반응형

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

 

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

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

programmers.co.kr

 

큐를 활용한 괄호 문제들과 비슷하게 풀이했습니다.
빈 큐인 q를 만들고, 입력으로 주어진 s의 문자를 하나씩 받으면서 q가 비어있거나, q의 마지막 요소가 현재 받은 문자와 다르면, q에 현재 문자를 추가합니다.
q의 마지막 요소가 현재 문자와 같으면, q의 마지막 요소를 제거합니다.
for 문이 종료되었을 때 q가 비어있으면 모든 문자가 제거된 것이므로 1을, 그렇지 않으면 0을 반환합니다.

 

from collections import deque 

def solution(s):

    q = deque()
    
    for char in s:
        # 큐가 비어있거나 마지막 요소가 현재 문자와 다르면, 현재 문자 추가
        if not q or q[-1] != char:
            q.append(char)
        # 큐의 마지막 요소와 현재 문자가 같으면, 마지막 요소 제거 
        else:
            q.pop()
    
    # 큐가 비어 있으면 문자열을 모두 제거한 것이므로 1 반환 
    if not q:
        return 1
    else:
        return 0
반응형