728x90
https://www.acmicpc.net/problem/9012
나의 풀이
스택을 사용하는 문제로 괄호로 구성된 문자열이 바르게 되어있다면 YES, 아니라면 NO를 출력하는 문제이다.
6
(())())
(((()())()
(()())((()))
((()()(()))(((())))()
()()()()(()()())()
(()((())()(
NO
NO
YES
NO
YES
NO
- 우선 괄호를 하나씩 뽑아 ')'일 때는 check에 +1을 해주고 '('일 때는 -1을 해줌
- (일 때 check = 0 이라면 순서가 꼬여 들어간 것이기 때문에 반복문을 break 해주고 Check에 -1을 넣어 No를 출력함
import sys
cnt = int(sys.stdin.readline())
for _ in range(cnt):
ps = list(sys.stdin.readline())[:-1]
check = 0
while ps :
p = ps.pop()
if p == '(' and check ==0 :
check = -1
break
if p == ')':
check += 1
else:
check -= 1
if check == 0:
print("YES")
else:
print("NO")
다른 사람의 풀이
나는 (일 때 check가 0이라면 괄호의 짝이 맞지 않다고 판단하였음
이 코드에서는 size(=check)가 0보다 작을 때 괄호의 짝이 맞지 않다고 판단함
import sys
N = int(input())
for i in range(N):
line = sys.stdin.readline()
size = 0
is_vps = True
for s in line:
if s == '(':
size += 1
elif s == ')':
size -= 1
if size < 0: # 짝이 맞는 여는 괄호가 없는 경우
is_vps = False
break
if size != 0:
is_vps = False
if is_vps:
print('YES')
else:
print('NO')
728x90
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python] 파이썬 백준(1874) 스택 수열 (0) | 2023.04.06 |
---|---|
[Python] 파이썬 백준(4949) 균형잡힌 세상 (0) | 2023.04.06 |
[Python] 파이썬 백준(10773) 제로 (0) | 2023.03.31 |
[Python] 파이썬 백준(10828) 스택 (0) | 2023.03.31 |
[Python] 파이썬 백준(5622) 다이얼 (0) | 2023.03.30 |