몸과 마음이 건전한 SW 개발자

프로그래머스 Lv. 2 짝지어 제거하기 Python 본문

알고리즘

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

스위태니 2024. 1. 8. 14:08

문제 링크

https://school.programmers.co.kr/tryouts/72055/challenges

정답 코드

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

풀이 방법

  1. 스택이 비면 alpha를 넣는다.
  2. 스택에 값이 있으면 마지막 값 -1번째 인덱스와 현재 alpha를 비교한다.
    1. 비교했을 때 값이 같으면 stack에서 pop을 한다.
    2. 값이 다르면 stack에 alpha를 append한다.
  3. 반복문이 끝났는데 stack이 존재하면 제거가 불가능 하므로 0을 존재하지 않으면 1을 return한다.

느낀점

- 몰라서 친구한테 물어봤다...

- 10만 이상의 값이 나오는 문제는 2중 반복문을 사용하지 말자.