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

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

iemxl 2024. 3. 28. 20:15

알고리즘 고득점 Kit > 스택/큐 > 올바른 괄호

 

 

올바른 괄호 Lv.2

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.


[제한사항]
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

 

 

 

첫 번째 풀이 :     92.3점

from collections import deque
def solution(s):
    answer = True
    q = deque()
    for i in s:
        if i == '(':
            q.append(i)
        elif len(q)>0 and i == ')':
            q.pop()
    if q:
        return False
    return True
  • q에 ( 만 남았을 경우를 생각안

 

 

 

 

두 번째 풀이:     100점

from collections import deque
def solution(s):
    q = deque()
    for i in s:
        if i == '(':
            q.append(i)
        else:
            if len(q) == 0:
                q.append(-1)
                break
            else:
                q.pop()
    if q:
        return False
    return True
  • 큐를 활용하여 메모리 절약