올바른 괄호

우하학·2024년 11월 9일

프로그래머스

목록 보기
4/14

문제 요약 : 괄호가 제대로 열려 있는 지 체크하는 문제

이건 유명한 스택관련 문제이기 때문에 파이썬에 내장 스택을 어떻게 쓰는 지 몰라서 좀 찾아봄

  • 스택
    파이썬에서는 따로 스택이 내장되어 있지 않고 리스트를 쓰고, 리스트의 내장 함수를 통해서 '스택처럼' 사용하는 것 같다
    pop() : 마지막 요소 삭제
    append() : 마지막 위치에 요소 삽입

코드

#스택 문제 ㅇㅇ 걍 리스트의 내장함수를 쓰면 됨

def solution(s):
    stack = []

    for i in s:
        if i == ")" :
            if len(stack) == 0:
                return False
            stack.pop()
        elif i == "(" :
            stack.append(i)
    return len(stack) == 0
  • 추가로 다른 사람들의 코드를 보고 배울 점이 하나 있어서 가져와봄

열린 괄호의 경우, 그냥 쉽게 말해서 닫힌 괄호는 pop만 해야해서 스택 안에 괄호가 없으면 문제가 있는 괄호로 판별해야 해서, len() 함수를 이용했다. 하지만 try-catch를 통해서 하는 것도 좋아 보이더라 ㅇㅇ

수정된 코드

def solution(s):
    stack = []

    for i in s:
        if i == ")" :
            # if len(stack) == 0:
            #     return False
            # stack.pop()
            try :
                stack.pop()
            except IndexError:
                return False
        elif i == "(" :
            stack.append(i)
    return len(stack) == 0

제출해보니, 좀 이렇게 예외처리가 조금 더 효율적인 것 같다. len()은 아무래도 함수를 계속 호출해서 그런가... 싶다

profile
코린이 탈출기

0개의 댓글