🌞Algorithm/🔥programmers

[programmers] 짝지어 제거하기 - 2017 팁스타운

뿌야._. 2021. 1. 11. 22:46

 

<짝지어 제거하기>

문제(출처: https://school.programmers.co.kr/learn/courses/30/lessons/12973)

 

 

 

문제 풀이

   - my solution

def solution(s):
    answer = 1
    
    temp=[]
    
    temp.append(s[0]) #첫번째 값 추가
    for i in range(1,len(s)):
        if(len(temp)==0): #길이가 0이면 그냥 추가
            temp.append(s[i])
        elif(temp[-1]==s[i]): #같은 값이면 pop
            temp.pop()
        else: #같은 값이 아니면 추가
            temp.append(s[i])
    if(len(temp)!=0): #길이가 0이 아니면 짝지어 제거하기 성공 x
        answer=0

    return answer

   처음에는 while문을 사용하여 문자열의 길이가 0이 아닐 때까지 반복하는 방식으로 코드를 구현하였다.

 하지만 이 방법으로는 시간 초과가 발생하였다. pop 때문인가 해서 pop이 아닌 인덱스로 접근하는 방법을

 구현했지만 마찬가지로 시간 초과가 발생하였다. 다른 사람의 문제 풀이를 찾아본 결과 stack을 이용하면

 된다는 힌트를 얻었다.

  

   1) 첫 번째 값을 list에 추가

   2) 문자열 끝까지 반복

       2-1) list 길이가 0이면 그냥 문자 추가

       2-2) list에 있는 값과 list에 넣을 값이 같으면 list 값 pop

       2-3) 같은 값이 아니면 문자 추가

   3) list 길이가 0이 아니면 짝지어 제거하기 성공 x 이므로 answer=0


출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges