[프로그래머스] 짝지어 제거하기 python

kiki·2022년 2월 24일
0

프로그래머스

목록 보기
8/79

문제 링크

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

문제 설명

1차 시도

def solution(s):
    while(s!=""):
        for i in range(len(s)-1):
            if(s[i]==s[i+1]):
                if(i+1 == len(s)-1):
                    s=s[:i]
                else:
                    s=s[:i]+s[i+2:]
                break
        else:
            return 0
    return 1
  • 문자열이 비거나, for문을 돌고도 달라진 게 없다면 return하는 형식으로 코드를 작성했다.
  • 문자열을 for문으로 돌면서 중복되는 글자가 있다면 슬라이싱을 통해 제거해줌
  • 일부 테스트 케이스에서 시간초과

2차 시도

def solution(s):
    stack =[]
    for i in s:
        if(stack == [] or stack[-1]!=i):
            stack.append(i)
        else:
            stack.pop()
    if(stack == []):
        return 1
    else:
        return 0
  • 질문하기를 보다가 스택을 사용해야한다길래 뭐람 하고 잠시 블로그를 봐버렸다.
  • 스택을 사용하면... 매우 편리한 것
  • 앞부터 처리하니까 while로 여러번 돌 필요 없이 len(s) 크기만큼만 실행하면 됐다.

정리

  • 문제의 유형을 어느정도 외워두는 것도 필요하겠다. 스택이 필요한 유형임을

0개의 댓글