괄호
📌 문제

예제 입력
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 |