본문 바로가기
백준

[백준] 9012번 파이썬 (괄호)

by 헤이즐넛 좋아하는 개발자 2024. 3. 20.

1. 문제와 예제

문제
예제


2. 전체 코드

import sys
input = sys.stdin.readline

# 입력 받기
T = int(input().rstrip()) # 입력 데이터 수

for _ in range(T):
    ps = input().rstrip() # 괄호 문자열
    stack = [] # 스택
    isValid = True # 바르게 구성된 문자열인지
    for p in ps:
        if p == '(':
            stack.append(p)
        else: # p == ')'
            if (len(stack) != 0 and stack[-1] == '('):
                stack.pop()
            else:
                isValid = False
                break
    if (len(stack) != 0 or not isValid):
        print("NO")
    else:
        print("YES")

3. 풀이

스택의 구조를 사용하면 된다. 풀이는 이 문제의 더 어려운 버전인 4949번 (균형잡힌 세상) 문제의 풀이를 참고하면 좋을 것 같다.

https://hazel-nut-library.tistory.com/entry/%EB%B0%B1%EC%A4%80-4949%EB%B2%88-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B7%A0%ED%98%95%EC%9E%A1%ED%9E%8C-%EC%84%B8%EC%83%81-1

 

[백준] 4949번 파이썬 (균형잡힌 세상)

1. 문제와 예제 닫혀있는 괄호가 나왔을 때 열려있는 괄호를 뒤에서부터 찾게 되므로 stack 구조를 활용하면 되겠다. 2. 전체 코드 import sys input = sys.stdin.readline while True: sen = input().rstrip() # 문자열 s

hazel-nut-library.tistory.com