꾸준히 합시다
백준 파이썬 9012번: 괄호 본문
문제 유형: 자료 구조, 문자열, 스택
# Solution 1
for _ in range(int(input())):
a = list(input())
s = 0
for i in a:
if i == "(":
s += 1
elif i == ")":
s -= 1
if s < 0:
print("NO")
break
if s > 0:
print("NO")
elif s == 0:
print("YES")
문제 유형이 스택으로 분류되어 있었지만 굳이 스택을 사용하지 않아도 풀 수 있었다.
- 우선 괄호를 문자열로 입력받아 리스트를 생성한다.
- 여는 괄호 "("가 나 나오면 s에 1을 더하고 닫는 괄호 ")"가 나오면 1을 빼준다.
- 이런 과정에서 -1이 나오면 NO를 출력하고 바로 반복문을 빠져나온다. 닫는 괄호가 여는 괄호의 개수보다 많은 경우로
))(((
와 같은 경우가 이에 해당한다. - 계산을 마치고 s가 0이라면 YES, 0 이상의 양수라면 NO를 출력해준다. 양수가 나오는 경우는
(((())
와 같은 경우이다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 1157번: 단어 공부 (0) | 2021.03.11 |
---|---|
백준 파이썬 9506번: 약수들의 합 (0) | 2021.03.10 |
백준 파이썬 2884번: 알람 시계 (0) | 2021.03.09 |
백준 파이썬 2588번: 곱셈 (0) | 2021.03.09 |
백준 파이썬 10093번: 숫자 (0) | 2021.03.09 |
Comments