반응형
링크 : https://www.acmicpc.net/problem/9012
어려운 문제를 계속 풀어와서 그런지 상대적으로 쉬운 문제도 어렵게 풀고 있었어서 해결하는데 꽤 애를 먹었다..
이 문제는 로직만 생각해내면 쉽게 풀 수 있을 것 같다
분류
- 자료구조
- 문자열
- 스택
생각 정리
1. '('의 개수와 ')'의 개수가 같아야한다.
2. '(' 가 나오기 전에 ')'가 나오면 안된다.
'('를 +1로, ')'를 -1로 생각해서
1. sum = 0이 나와야한다.
2. sum이 -1이 되자마자 실패한다.
전체 코드
n = int(input())
li = []
for i in range(n):
li = list(input())
sum = 0
for j in li:
if j == '(':
sum += 1
elif j == ')':
sum -= 1
if sum < 0: # '('보다 ')' 먼저 나온 경우 or 더 많이 나온 경우
print('NO')
break
if sum == 0:
print('YES')
elif sum > 0: # '('가 더 많이 나온 경우
print('NO')
반응형
'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글
[4949] 균형잡힌 세상 (Python) (0) | 2021.06.21 |
---|---|
[10828] 스택 (Python) (0) | 2021.06.21 |
[18258] 큐 2 (Python) (0) | 2021.06.18 |
[10250] ACM 호텔 (Python) (0) | 2021.06.15 |
[1543] 문서 검색 (Python) (0) | 2021.06.15 |