[프로그래머스] 올바른 괄호 python

kiki·2023년 12월 23일
0

프로그래머스

목록 보기
12/78

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12909

문제 설명

주어진 괄호들의 짝이 맞는지 확인하는 문제

1차 시도 - 통과

def solution(s):
    tmp = 0
    for i in s:
        tmp += 1 if i=="(" else -1
        if tmp<0:
            return False
    return True if tmp==0 else False

단순하게 수를 더하고 빼서 0 이하로 가는 경우 False를 리턴.
근데 마지막을 저렇게 하는 것보다 그냥 return tmp==0을 했다면 더 깔끔하겠지.
무엇보다 tmp += 1 if i=="(" else -1 이게 되는게 신기하네. = 같은 연산만 적용되는 줄 알았는데 += 도 되는구나~

2차 시도

def solution(s):
    tmp = []
    for i in s:
        if i=="(":
            tmp.append(i)
        else:
            try:
                tmp.pop()
            except:
                return False
        
    return tmp == []

이건 리스트를 스택으로 사용해 풀이한 것. try, except를 이용한 예외처리가 돋보인다.
마지막에 리스트가 비었는지 확인하는 부분에서 not tmp로도 처리 가능하다.
list==[]으로 확인하는 건 파이썬스럽지 못하다고 한다. 떼잉~

정리

  • return tmp==0 과 같이 간단하게 True, False로 리턴 가능하다
  • 파이썬에서 논리값을 반대로 바꾸는 연산자는 not임. ! 아님
  • ~은 비트 연산자임
  • 리스트에서 .pop()은 마지막 원소를 반환하면서 제거. pop(1)은 인덱스 1번 원소 제거.
  • try, except를 사용한 예외처리
  • if문에서 empty 리스트는 False를, empty가 아닌 리스트는 True를 반환하므로 not list와 같은 코드로 비어있는지 확인 가능

0개의 댓글