[백준 9012 파이썬] - 괄호

zsunny·2022년 7월 22일
1

📌 문제

💯 정답

• 방법 1. 틀림.. 반례: ( ) ) ( ( )

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    data = input().rstrip()
    if data.count("(") == data.count(")"):
        print("YES")
    else:
        print("NO")

• 방법 2. 정답!!

import sys
input = sys.stdin.readline

t = int(input())
for _ in range(t):
    data = input().rstrip()
    while(True):
        if "()" in data:                    # 문자열에 () 가 있으면
            data = data.replace("()", "")   # 문자열에서 () 를 제거한다
        else:                               # 더이상 ()가 없으면
            break                           # 탈출
    if len(data) == 0:          # ()를 제거한 문자열에 아무것도 없으면
        print("YES")            # VPS 임
    else:
        print("NO")

📝 설명

• 처음엔 "("의 수와 ")"의 수가 같으면 되지 않을까 해서 방법 1 처럼 했으나 반례가 있었다.
  ())(()의 경우 두 괄호의 개수가 같지만 VPS는 아니다.
• 생각해보니 보이는 모든 () 를 제거했을때 괄호가 남으면 VPS가 아니라는 생각이 들었다.
  따라서 방법 2처럼 하니 성공했다.
profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글