반응형
문제설명
https://www.acmicpc.net/problem/9012
사고과정
- 예전에 풀어본 괄호관련 문제를 풀어본 게 도움이 되었다.
- 핵심 풀이법은 다음과 같다.
- 1. ( 가 먼저나와야 함을 인지! ( 가 나올 땐 +1 하고 ) 가 나오면 -1을 한다.
- 이 때, )가 나오고 -1을 하기 전에 count 값이 이미 0이 된 상태라면 올바른 괄호 문자열 상태가 아니다. 예를 들면 " ( ) ) " 이런 경우! ) 가 나오고 연속으로 ) 가 등장한 경우!
- 다른 경우는 괄호 문자열 하나씩 loop를 다 돌았을 때 count 값이 0이 아니면 올바른 괄호 문자열 상태가 아니다. 예를 들면 " ( ) ( ( ( " 같은 경우가 해당한다.
- 마지막으로 모든 문자열을 다 돌고 난후에 count 값이 0이라면 그 때는 올바른 괄호 문자열이다.
풀이
for tc in range(int(input())):
string = input()
count = 0
flag = False
for s in string:
if s == '(':
count += 1
else:
if count == 0:
print('NO')
flag = True
break
count -= 1
if flag:
continue
if count != 0:
print('NO')
else:
print('YES')
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[BOJ] 1406번 - 에디터 (0) | 2021.10.24 |
---|---|
[BOJ] 1874번 - 스택 수열 (0) | 2021.10.23 |
[BOJ] 9093번 - 단어 뒤집기 (0) | 2021.10.23 |
[BOJ] 10828번 - 스택 (0) | 2021.10.23 |
[이코테] BFS - 블록 이동하기 (0) | 2021.10.23 |