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

cheeeese·2022년 4월 1일
0

코딩테스트 연습

목록 보기
76/151
post-thumbnail

📖 문제

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

💻 내 코드

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

💡 풀이

원래 제출했던 코드

def solution(s):
    
    answer = 0
    queue=list(str(s))
    cnt=0
    
    while cnt<len(queue)-1:
    
        if queue[cnt]==queue[cnt+1]:
            
            queue.insert(0, queue[cnt])
            queue.append(queue[cnt])
            queue.pop(cnt+1)
            queue.pop(cnt+1)
            
            cnt=0
            answer+=1
            
        else:
            cnt+=1
            
    if answer>0:
        return 1
    else:
        return 0

-> 시간초과

stack을 이용하여 풀어야 하는 문제

  • stack이 비어있으면 stack.append(s[i])
  • 스택이 비어있지 않다면 스택의 맨 마지막 값과 현재 값을 비교
    • 같으면 맨 마지막 값을 pop한다
    • 다르다면 stack에 append
  • for문이 끝난 뒤 stack이 비어있다면 1을 반환, 비어있지 않다면 0을 반환

0개의 댓글