티스토리 뷰

📚 문제

입력

출력

예제 입력 1

6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(

예제 출력 1

NO
NO
YES
NO
YES
NO

예제 입력 2

3
((
))
())(()

예제 출력 2

NO
NO
NO

🧑🏻‍💻 풀이 과정

  • 입력 받은 괄호 문자열(s)에서 괄호를 하나씩 꺼내서 "("면 arr에 append 및 ans +1, ")"면 arr에서 pop 및 ans -= 1하자.
  • ")"일 때, arr의 길이가 0이라면 "("가 없는 괄호를 닫은 것이므로, 올바르지 못한 괄호이다. 바로 NO를 반환하자. (if len(arr) == 0: return 'NO')
  • 반복을 마치고, ans가 0이면 올바른 괄호니까 "YES", 아니라면 "NO"를 반환하자
def process(s):
    arr = []
    ans = 0
    for i in s:
        if i == '(':
            arr.append('(')
            ans += 1
        elif i == ')':
            # 괄호가 () )( () 이런식으로 맞지 않으면 NO
            if len(arr) == 0:
                return 'NO'
            ans -= 1
            arr.pop()

    return 'YES' if ans == 0 else 'NO'


for _ in range(int(input())):
    print(process(input()))
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함