100세까지 코딩
[백준] 4949번 균형잡힌 세상 (파이썬) 본문
4949번: 균형잡힌 세상
각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에
www.acmicpc.net
문제
나의 생각
- 스택을 구현한다.
- while 반복문 사용하고 . 이 들어오면 break.
- 문장에 "([" 이 들어있으면 stack에 넣는다.
- 문장에 ")]" 이 들어있으면 stack에서 가장 최상위에 있는 것을 꺼낸다. pop()
- ")]"이 나왔는데 stack이 비어있거나 pop() + ")]" 이 "()" , "[]"처럼 쌍을 이루지 않으면 false
나의 풀이
import sys
while True:
stack = []
input_data = sys.stdin.readline().rstrip()
flag = True
if input_data == ".":
break
for data in input_data:
if data in "([":
stack.append(data)
elif data in ")]":
if not stack or stack.pop() + data not in ["()", "[]"]:
flag = False
print("yes") if flag and not stack else print("no")
참고
1. if not stack: stack이 비어있으면 True
2. in 연산자 : 안에 포함되어있으면 True
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] 10989번 수 정렬하기3 (파이썬) (0) | 2024.01.27 |
---|---|
[백준] 12789번 도키도키 간식드리미 (파이썬) (0) | 2024.01.27 |
[백준] 11650번 좌표 정렬하기 (파이썬) (0) | 2024.01.27 |
[백준] 1018번 체스판 다시 칠하기 (파이썬) (0) | 2024.01.19 |
[백준] 19532번 수학은 비대면강의입니다 (파이썬) (0) | 2024.01.19 |