[Python] 백준9012번 : 괄호

hjeu·2025년 2월 15일

백준

목록 보기
34/48
post-thumbnail

💡문제

백준 9012번 문제 링크

🍀풀이

문제를 보고 괄호의 종류가 하나니까 count 세서 비교하면 되겠구나! 해서 코드를 작성했는데 첫번째 예제만 보고 풀다보니 두번째 예제가 통과가 안됐다...

오답 코드

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    command = input().rstrip()
    l, r = 0, 0
    
    for i in command:
        if i == '(':
            l += 1
        elif i == ')':
            r += 1
    if l == r:
        print('YES')
    else:
        print('NO')

나는 바보바보

그래서 그냥 stack 사용해서 소거법으로 했다!

정답 코드

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    command = input().rstrip()
    stack = []
    
    for i in command:
        if len(stack) == 0 and i == '(':
            stack.append(i)
        elif len(stack) == 0 and i == ')':
            stack.append(i)
        elif stack[-1] == '(' and i == ')':
            stack.pop()
        else:
            stack.append(i)
    
    if len(stack) == 0:
        print('YES')
    else:
        print('NO')

좋은 단어 문제랑 비슷하게 풀었다! 근데 뭔가 더 좋은 풀이가 있을거 같은데 코테 리뷰할 때 다른 사람들 코드를 한번 들어봐야겠다. 다들 푸는 방법이 달라서 매번 리뷰할 때마다 새로운걸 알아가서 재밌다!

의혁님 코드

import sys

input = sys.stdin.readline

N = int(input())

for _ in range(N):
    
    ps = input().rstrip()
    
    while '()' in ps:
        ps = ps.replace('()', '')
    
    if ps:
        print("NO")
    else:
        print("YES") 

와 코드 리뷰하면서 의혁님의 코드가 진짜 파이썬스러워서 추가했다.
시간은 똑같지만 ㄹㅇ 간단하다.!!


profile
나는야 개발왕이 될거야! (๑ •̀ω•́)۶

0개의 댓글