[프로그래머스/파이썬] Level 2 짝지어 제거하기

bye9·2021년 4월 27일
0

알고리즘(코테)

목록 보기
130/130

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


알고리즘 분류

  • 스택/큐

문제풀이

어찌 풀긴했는데 코드를 보다시피 복잡하다..ㅎ
기본 논리는 스택을 기본으로 해서 index를 조절해서 문제의 조건에 맞게 짝지어서 제거하는 논리를 수행하였다.

더 간단한 코드의 논리도 동일하다.
result의 마지막 끝 값과 문자열의 값과 비교하는 것이다.

소스코드

def solution(s):
    stack=[]
    stack.append(s[0])
    index=1
    while True:
        if index==len(s):
            break
    
        if len(stack)==0:
            stack.append(s[index])
            index+=1
            
        pick=stack.pop()
        #print(index,pick)
        if index==len(s):
            stack.append(pick)
        for i in range(index,len(s)):
            if pick!=s[i]:
                stack.append(pick)
                stack.append(s[i])
                index+=1
                break
            else:
                index+=1
                break
    #print(stack)
    
    if len(stack)==0:
        return 1
    return 0

더 간단한 코드

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

0개의 댓글