[프로그래머스 Level.2 / Python] 짝지어 제거하기

오형상·2023년 4월 18일
0

알고리즘

목록 보기
10/23
post-thumbnail

알고리즘 유형 : 연습 문제
풀이 없이 스스로 풀었나요? : ❌


프로그래머스 Level.2 짝지어 제거하기

효율성 테스트 실패 코드

def solution(s):
    start = 0
    while start < len(s) - 1:
        if s[start] == s[start + 1]: # 현재 원소와 다음원소가 같다면 
            s = s.replace(s[start] + s[start], '', 1) # 공백으로 대체하여 제거
            start = max(0, start - 1) # 제거된 후 마지막 인덱스 설정
        else:
            start += 1 # 현재 원소와 다음 원소가 다르다면 인덱스 +1
            
    if len(s) == 0:
        return 1
    else:
        return 0

효율성 테스트 성공 코드

def solution(s):
    stack = []
    for i in range(len(s)):
        if not stack:
            stack.append(s[i])  # stack이 비어있다면 push()
        else:
            if s[i] == stack[-1]:  # stack 마지막 값과 s[i]가 같다면 pop()
                stack.pop()
            else:
                stack.append(s[i])  # stack 마지막 값과 s[i]가 다르면 push()

    if not stack:
        return 1  # stack이 비어있다면 return 1
    else:
        return 0  # stack이 비어있지 않다면 return 0

후기

while, replace를 사용하여 풀고자 했으나 시간 초과 발생하였으나
스택을 떠올리지 못해 시간 초과를 해결하지 못했다. 😥
스택을 사용하면 쉽게 풀 수 있다.

0개의 댓글