본문 바로가기
카테고리 없음

프로그래머스 - Lv.2 올바른괄호 파이썬

by 윤뇽뇽

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. SOLUTION

괄호 검증은 stack 활용 기본 문제다.

이 문제 같은 경우에는 괄호 종류가 소괄호 한 가지 뿐이라 구현 난이도가 그렇게 어렵지는 않은 편이다.

반복문을 통해 문자열을 돌면서 괄호를 stack에 넣었다 뺐다 하면서 짝을 맞춰보면 된다.

왼쪽 괄호/오른쪽 괄호일 때로 나누어서 생각해보면 간단히 풀 수 있는 문제!

 

  • 현재 괄호가 '(' 일 때 : stack에 push
  • 현재 괄호가 ')' 일 때
    • stack이 비어있으면 : 짝이 맞지 않는다는 뜻! false
    • stack이 비어있지 않으면 : stack 마지막에 들어가있는 '(' 를 pop해서 제거해준다
  • 반복문이 종료된 이후 stack에 남아 있는 원소가 있다면 : 짝이 맞지 않는 것이므로 false 출력

2. CODE

def solution(s):
    answer = True
    stack = []
    # 문자열을 돌면서 stack에 넣어주기
    for i in s:
        if i == '(':        # i가 '('일 때 : stack에 넣기
            stack.append(i)
        else:               # i가 ')'일 때
            if stack:       # stack이 비어있지 않으면 '('제거
                stack.pop()
            else:           # stack이 비어있으면 flase
                answer = False
    if stack:               # for문 다 돌았는데 stack이 비어있지 않으면 false
        answer = False
    return answer

3. 결과

알고리즘 재활운동이 필요해서 기본 문제들부터 차근차근 풀어보면서 블로그에 정리도 해 보려고 한다.

중괄호/대괄호까지 포함된 괄호 검증 문제도 있으니 그것들도 다시 한 번 풀어보도록 하자!

댓글