"""
- 스택 자료구조 사용
- 입력된 문자열이 짝이 맞는 괄호"()"로 이루어져있는지 확인하여 YES 또는 NO를 반환하는 문제.
* 수도 코드
- 입력된 문자열 길이만큼 반복문 돌기
- ( 가 들어오면 stack에 추가
- ) 가 들어오면 stack에 들어있던 ) 를 삭제 (= 짝이 맞다)
- 반복문이 끝났을 경우 ( 가
- stack에 남아있다면 짝이 맞지 않다. => NO를 반환
- stack이 남아있지 않다면 짝이 맞다. => YES를 반환
메모리 31120KB | 시간 44ms | 길이 367B
"""
t = int(input())
str_ls = [input() for _ in range(t)]
def check_vps(str):
stack = [] # stack 생성
for char in str: # str의 길이만큼 반복
if char == '(': # char가 ( 일때 stack에 추가
stack.append(char)
elif char == ')': # chart가 ) 일때
if not stack: # 만약 stack이 비어있다면 = 짝이 안맞음. False
return False
stack.pop() # 그렇지 않다면 = stack에 (가 있음. = 짝이 맞음. => stack에서 마지막에 들어온 (를 제거.
return not stack
# 반복이 끝났을때 stack이 비어있다면 = 모두 짝이 맞음 = True = return YES
# stack이 비어있지 않다면 = 남은 (가 있음. = 짝이 안맞음 = False = return NO
for str in str_ls:
print('YES' if check_vps(str) else 'NO')
https://www.acmicpc.net/problem/9012
'study > Algorithm' 카테고리의 다른 글
[백준] 파이썬 2346 : 풍선 터뜨리기 (0) | 2024.04.04 |
---|---|
[백준] 파이썬 1966번: 프린터 큐 (0) | 2024.04.04 |
[백준] 파이썬 3107 : IPv6 (0) | 2024.04.02 |
[백준] 파이썬 2615 : 오목 (0) | 2024.04.02 |
[백준] 파이썬 1244 : 스위치 켜고 끄기 (0) | 2024.04.02 |