[python] 백준 9012번

도덩이의 개발 일지·2024년 9월 25일

백준

목록 보기
98/131
post-thumbnail

안녕하세요 !

오늘은 백준 - 괄호 문제를 가져왔습니다.


문제 설명


해결 방법

문제를 해결한 방법은 다음과 같습니다.

  1. 문자열의 수를 입력받는다.
  2. 문자열을 입력받아 VPS를 판별하는 함수를 호출한다.
  3. 문자열을 반복문을 통해 순회하면서 만약 문자가 왼쪽 괄호일 경우 스택에 추가한다.
  4. 만약 문자가 오른쪽 괄호이고 스택에 요소가 있을 경우 스택에서 요소를 하나 제거하고 반대의 경우 False를 반환합니다.
  5. 반복문이 끝난 이후 스택에 요소가 남아있으면 False를 아니면 True를 반환합니다.
  6. 반환한 값에 따라 YES/NO를 출력합니다.

  1. 문자열의 수를 입력받는다.

  1. 문자열을 입력받아 VPS를 판별하는 함수를 호출한다.

  1. 문자열을 반복문을 통해 순회하면서 만약 문자가 왼쪽 괄호일 경우 스택에 추가한다.
for i in range(len(string)):
   if string[i] == "(":
       stack.append(string[i])

  1. 만약 문자가 오른쪽 괄호이고 스택에 요소가 있을 경우 스택에서 요소를 하나 제거하고 반대의 경우 False를 반환합니다.
else:
    length = len(stack)
        if length:
            stack.pop()
        else:
            return False

  1. 반복문이 끝난 이후 스택에 요소가 남아있으면 False를 아니면 True를 반환합니다.
if len(stack):
    return False
return True

  1. 반환한 값에 따라 YES/NO를 출력합니다.
if result:
    print("YES")
else:
    print("NO")

전체 코드

import sys

n = int(sys.stdin.readline().strip())

def VPS(string):
    stack = []
    for i in range(len(string)):
        if string[i] == "(":
            stack.append(string[i])
        else:
            length = len(stack)
            if length:
                stack.pop()
            else:
                return False
            
    if len(stack):
        return False
    return True

for i in range(n):
    string = list(sys.stdin.readline().strip())
    result = VPS(string)
    if result:
        print("YES")
    else:
        print("NO")
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글