반응형
https://www.acmicpc.net/problem/9012
for i in range(int(input())):
result = 0
for j in input():
if j == '(':
result += 1
else: # j = ')'일때
result -= 1
if result < 0:# 결과가 음수로 되는 순간 끝
break
if result == 0:
print("YES")
else:
print("NO")
처음 코드를 짜다가, 사실 stack을 만들어 append, pop() 하는 알고리즘을 짜려 했는데,
오래오래 보다 보니 필요하지 않을 것 같아 논리적으로 count를 하여 코드를 짜보았다.
방법은 이러하다.
1. 처음에 ')' 가 나오면 무조건 NO
2. 처음에 '(' 가 나오면 result += 1을 해준다. 그 후 ')' 나오면 상쇄 시켜 result -= 1을 해준다.
3. 총 result = 0 이면 YES이고, result 가 음수가 될 시 바로 종료하여 NO를 출력한다.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 10809번 알파벳 찾기 파이썬 (0) | 2022.01.29 |
---|---|
백준 3036번 링 파이썬 (0) | 2022.01.17 |
백준 23813번 회전 파이썬 (0) | 2022.01.15 |
백준 1920번 수 찾기 파이썬 (2) | 2022.01.14 |
백준 18406번 럭키 스트레이트 파이썬 (0) | 2022.01.12 |