알고리즘

[python] 프로그래머스 스택/큐 - 올바른 괄호

용이 (young) 2023. 4. 18. 12:50

👀 문제

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 

예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 
올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

 

🌻 아이디어

  • stack을 이용 -> '(' 일 경우만 append 
  • ')'인 경우 -> stack에 '(' 이 없다면 False 
  • stack의 요소가 모두 소진되어야 함 

** 문자열 s의 길이 : 100,000 이하의 자연수 <- 하나 씩 탐색해도 ok 

코드 

def solution(s):    
    stack = []

    for c in s: 
        if c == '(': 
            stack.append(c)
        elif c == ')': 
            if stack: stack.pop()
            else: return False 
    
    if stack: return False 
   	return True

 

예전에 네이버 코딩테스트 기출에 나왔다고 하여 여러 번 풀어본 문제

  • 짝 or 그룹을 찾아야 한다 -> 주로 stack 또는 queue 
  • python으로 구현하기 쉬운 것은 stack이므로 먼저 stack으로 생각해보자