Skip to content

[PGS] 올바른 괄호 - #79

Open
been12151 wants to merge 16 commits into
mainfrom
week4/valid-parentheses
Open

[PGS] 올바른 괄호#79
been12151 wants to merge 16 commits into
mainfrom
week4/valid-parentheses

Conversation

@been12151

Copy link
Copy Markdown
Owner

🍪 문제 이름

Resolve: 올바른 괄호

🍊 문제 정의

input

  • s : ( 또는 ) 로만 이루어진 문자열 (1 ≤ 길이 ≤ 100,000)

output

  • s가 올바른 괄호 문자열이면 True, 아니면 False

예시

s result
"()()" true
"(())()" true
"))((" false
"(()((" false

🍑 알고리즘 설계

스택을 활용. 문자를 순서대로 읽으면서 스택이 비어 있거나 현재 문자가 (이면 스택에 push. 스택의 top이 (이고 현재 문자가 )이면 짝이 맞으므로 pop.
모든 문자를 처리한 후 스택이 비어 있으면 올바른 괄호, 남아 있으면 짝이 맞지 않는 괄호가 있다는 뜻이므로 not stack으로 바로 반환.

def solution(s):
    stack = []
    for c in s:
        if not stack:
            stack.append(c)
        elif stack[-1] == '(' and c == ')':
            stack.pop()
        else:
            stack.append(c)
    return not stack

🥝 최악 수행 시간 복잡도

  • O(n) (n = s의 길이)
  • 문자열을 한 번 순회하며 각 문자에 대해 push/pop 연산만 수행하므로 O(n)

🍰 특이 사항 (Optional)

not stack으로 bool을 바로 반환하는 부분에서, 스택에 (만 들어갈 수 있는 구조라 top이 (인지 별도로 체크할 필요 없이 비어 있는지 여부만 확인하면 됨.

@been12151
been12151 requested review from gayo73 and yangyeeeun July 13, 2026 13:02
@been12151 been12151 self-assigned this Jul 13, 2026
@been12151 been12151 linked an issue Jul 14, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PGS] 올바른 괄호 / level 2

2 participants