BOJ/Silver

[BOJ] #9012 괄호

Opal1031 2026. 4. 13. 11:32

괄호

백준 #9012


📌 문제

예제 입력

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

예제 출력

NO
NO
YES
NO
YES
NO

📌 풀이

Logic

  • 문자열 개수 N 입력 받기
  • 괄호 문자열 입력 받기
  • PS를 순서대로 탐색하며 괄호의 쌍 확인
    • "("와 ")"의 개수를 count를 통해 확인
    • count가 0인 경우 VPS 성립
    • count가 도중에 음수가 되는 경우 쌍 성립 불가 <-- vps = False
  • VPS 여부 출력
# 변수명
N : 괄호 문자열 개수
PS : 괄호 문자열
count : 문자열의 괄호 쌍 여부 확인 변수
vps : PS의 성립 여부 플래그

Python

import sys

N = int(sys.stdin.readline())

for _ in range(N):
    PS = list(map(str, sys.stdin.readline().strip()))
    count = 0
    vps = True

    for ps in PS:
        if ps == '(':
            count += 1

        elif ps == ')':
            count -= 1

        if (count < 0):
            vps = False
            break

    if (vps and (count == 0)):
        print("YES")

    else:
        print("NO")

✏️ 새로운 내용

-


📚 회고

💡 Flag 변수

  • 플래그(Flag)란 "깃발"을 뜻한다.
  • 무언가를 기억하거나 신호를 남기기 위한 용도로 프로그램에 사용되는 변수이다.
  • 주로 Bool형으로 쓰이며, 특정 조건이 성립할 때만 반복문을 제어하는 등의 상황에서 간편하게 활용된다.
  • 평소 코딩을 위해 흔히 사용하던 방식이지만, 이를 Flag라고 부른다는 사실은 '객체지향프로그래밍' 과목 시간에 알게 되었다.
  • 이후 이 방식이 프로그래밍에서 널리 쓰이는 정형화된 패턴이라는 것을 깨닫고, 적극 활용하게 되었다.

'BOJ > Silver' 카테고리의 다른 글

[BOJ] #1002 터렛  (0) 2026.04.13
[BOJ] #1064 평행사변형  (0) 2026.04.13
[BOJ] #18110 solved.ac  (0) 2026.04.13
[BOJ] #11441 합 구하기  (0) 2026.04.13
[BOJ] #2553 마지막 팩토리얼 수  (0) 2026.04.13