[문제]
https://www.acmicpc.net/problem/4949
[풀이]
- 문자열을 sentence 변수에 저장한다.
- sentence에 있는 문자 하나씩 검사한다
- 문자가 '(' 이거나 '[' 인 경우 (열린 문자일 경우)
- stack 리스트에 문자를 추가한다.
- 문자가 ')' 인 경우
- stack 리스트가 empty이거나 stack의 마지막 원소를 꺼냈을 때 '['인 경우
- flag를 False로 변환
- break로 반복문 나옴
- stack의 마지막 원소를 꺼냈을 때 '('인 경우
- pop 함수로 stack의 마지막 원소 꺼냄
- stack 리스트가 empty이거나 stack의 마지막 원소를 꺼냈을 때 '['인 경우
- 문자가 ']' 인 경우
- stack 리스트가 empty이거나 stack의 마지막 원소를 꺼냈을 때 '('인 경우
- flag를 False로 변환
- break로 반복문 나옴
- stack의 마지막 원소를 꺼냈을 때 '['인 경우
- pop 함수로 stack의 마지막 원소 꺼냄
- stack 리스트가 empty이거나 stack의 마지막 원소를 꺼냈을 때 '('인 경우
- 문자가 '(' 이거나 '[' 인 경우 (열린 문자일 경우)
- flag이 True이고 stack이 empty라면 "yes"출력. 아닐 경우 "no" 출력
[코드]
if __name__ == '__main__':
while True:
sentence = input()
if sentence == '.':
break
stack = []
flag = True
for i in sentence:
if i == '(' or i == '[':
stack.append(i)
elif i == ')':
if not stack or stack[-1] == '[':
flag = False
break
elif stack[-1] == '(':
stack.pop()
elif i == ']':
if not stack or stack[-1] == '(':
flag = False
break
elif stack[-1] == '[':
stack.pop()
if flag and not stack:
print("yes")
else:
print("no")
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 2805번 나무 자르기 (0) | 2021.08.09 |
---|---|
[Python] BOJ/백준 2108번 통계학 (0) | 2021.08.07 |
[Python] BOJ/백준 1966번 프린터 큐 (0) | 2021.08.05 |
[Python] BOJ/백준 11651번 좌표 정렬하기 2 (0) | 2021.08.05 |
[Python] BOJ/백준 1436번 영화감독 숌 (0) | 2021.08.03 |