728x90
반응형
Silver IV
# 9012 괄호
링크 : https://www.acmicpc.net/problem/9012
풀이
T = int(input())
for i in range(T):
text = input()
cnt = 0
for i in text:
if i == '(':
cnt += 1
else:
cnt -= 1
if cnt < 0:
print('NO')
break
if cnt > 0:
print('NO')
elif cnt == 0:
print('YES')
후기
- 꽤 오랫동안 시도와 실패를 반복했는데 결국 풀어냈다.
- 입력값의 왼쪽에서 오른쪽으로 for문을 통해 탐색한다. 여는 괄호(' ( ')가 있을 때 cnt + 1을, 닫는 괄호(' ) ')가 있을 때 cnt - 1을 해주었다. for문을 통해 탐색하는 동안 cnt가 음수가 될 경우 여는 괄호 없이 닫는 괄호가 입력 된 것이기 때문에 'NO'를 출력하고 탐색을 break 했다.
- 탐색과정이 끝난 후에 YES/NO 판별을 다시 진행했다. cnt > 0 일 경우 여는 괄호가 필요 이상으로 입력된 것이고, cnt < 0 일 경우 닫는 괄호가 필요 이상으로 많은 것이다. 그러나 cnt < 0 일 경우는 이미 앞서 진행한 탐색과정에서 걸러지기 때문에 따로 조건을 세우지 않았다.
- cnt == 0은 이상적인 경우로 여는 괄호와 닫는 괄호가 동일한 수 만큼 존재하며, 괄호의 규칙을 무너뜨리지 않는다. 따라서 'YES'를 출력하도록 한다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 15829 Hashing (0) | 2022.02.25 |
---|---|
[백준 파이썬] # 4949 균형잡힌 세상 (0) | 2022.02.25 |
[백준 파이썬] # 9375 패션왕 신해빈 (0) | 2022.02.25 |
[백준 파이썬] # 11723 집합 (0) | 2022.02.24 |
[백준 파이썬] # 17219 비밀번호 찾기 (0) | 2022.02.24 |