문제
https://www.acmicpc.net/problem/4949
풀이
import sys
input=sys.stdin.readline
while True:
arr = input()[:-1]
if arr=='.':
break
else: arr=list(arr)
stack=[]
for idx in arr:
if idx=='(' or idx=='[':
stack.append(idx)
elif idx==')':
if len(stack) and stack[-1]=='(':
stack.pop()
else:
print("no")
break
elif idx==']':
if len(stack) and stack[-1]=='[':
stack.pop()
else:
print("no")
break
else:
print("no") if len(stack) else print("yes")
스택으로 풀었다. (와 [을 스택에 넣어주면서 검사하였다.
- sys.stdin.readline으로 시간 단축, 이때 제일 마지막 개행문자를 없애주기위해[:-1] 사용
- 만약 . 이 입력되었으면 break하고 아니면 리스트로 만들어준다.
- 스택을 사용하기 위해 스택 선언
- 리스트로 만들어준 arr을 반복문으로 돌린다.
- 이때 ( 이거나 [ 이 나오면 스택에 더해준다.
- 만약 ) 이 나오면 스택의 제일 마지막이 (인지 확인해준다. 이때 스택의 길이 체크도 해준다. 만약 (이 아니면 no 출력
- ] 도 6번과 마찬가지로 진행
- 끝까지 다돌렸는데 만약 스택에 ( 이나 [ 이 남아있으면 즉, 길이가 1 이상이면 no 출력
느낀점
스택은 너무 재밌다!!!! 아직까지 스택에서 내가 푼 문제들은 다 거기서 거기같음.. 언제 어려운 문제가 나올까
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #18258 - 큐 2 (1) | 2021.12.07 |
---|---|
[Python] 백준 #1874 - 스택 수열 (1) | 2021.12.05 |
[Python] 백준 #9012 - 괄호 (0) | 2021.12.02 |
[Python] 백준 #10773- 제로 (0) | 2021.12.01 |
[Python] 백준 #10828 - 스택 (0) | 2021.12.01 |