코딩테스트/프로그래머스

[스택] 올바른 괄호 - python

민톨이 2025. 5. 7. 22:52
728x90

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

닫힌 괄호와 열린 괄호의 수가 같아야 닫혔다고 판단하는 문제이다

열린 경우는 스택 배열에 넣고 닫힌 경우는 pop()해서 헤드를 제거하면 스택배열의 길이가 0이 되도록 풀면 되는 문제이다

 

풀이

def solution(s):
    stack = []
    
    for i in range(len(s)):
        if s[i] == "(":
            stack.append("(")
        elif s[i] == ")":
            if len(stack) == 0:
                return False
            stack.pop()
    
    if len(stack) != 0:
        return False 
    else:
        return True

 

s[i]가 열린 괄호라면 스택에 추가해준다

s[i]가 닫힌 괄호일 경우 

- 1. stack의 길이가 0이면 False반환 (처음으로 닫힌 괄호가 들어가는 경우)

- 2. 그게 아니라면 pop()으로 이미 들어가 있는 열린 괄호를 제거해준다

 

만약 stack의 길이가 0이 아니라면 => 괄호 짝이 안맞는 경우니까 False 반환하고

그게 아니라면 True를 반환해준다.