728x90
https://www.acmicpc.net/problem/4949
- 생각
- 모든 걸 다 돌리면 시간 초과가 나지 않을까 해서 괄호만 남기고 돌리기로 결정
- re.sub(a,b,word) : word의 a를 모두 b로 바꾸기
- replace 여러개 해야하나 했는데 편했다.
- 다른 사람 코드 보니 모든 걸 돌려도 됨... 그래도 시간 줄였다.
- re.sub(a,b,word) : word의 a를 모두 b로 바꾸기
- 괄호 짝 확인
- 여는 괄호면 스택에 넣고
- 닫는 괄호인데 짝이 맞으면 팝
- 모든 걸 다 돌리면 시간 초과가 나지 않을까 해서 괄호만 남기고 돌리기로 결정
- 코드
from sys import stdin
import re
while True:
result = 'yes'
s = stdin.readline().rstrip()
# 종료조건(맨 마지막에 점 하나)
if s == '.':
break
# 검사!!
# 숫자 영어 점 공백 제거
s = re.sub('[0-9a-zA-Z. ]','',s)
# 괄호가 없는거면 공백만 남으니 통과
if s != '':
# 괄호 확인
stack=[]
for i in s:
# 여는 괄호면 추가
if i == '(' or i == '[':
stack.append(i)
# 닫는 괄호, 짝이 존재하고 짝이 맞아
elif i == ')' and stack and stack[-1] == '(':
stack.pop()
# 닫는 괄호, 짝이 존재하고 짝이 맞아
elif i == ']' and stack and stack[-1] == '[':
stack.pop()
# 닫는 괄호, 짝이 맞지 않아
elif i == ')' or i == ']':
result = 'no'
break
# 다 했는데 스택에 남아있다 == 짝이 맞지 않다.
if stack:
result = 'no'
print(result)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 1181. 단어 정렬 - Python (0) | 2022.06.13 |
---|---|
[프로그래머스] Lv.1 크레인 인형뽑기 게임 (0) | 2022.06.13 |
[백준] 7586. 덩치 - Python (0) | 2022.06.12 |
[백준] 11723. 집합 - Python (0) | 2022.06.12 |
[백준] 1764. 듣보잡 - Python (0) | 2022.06.11 |
댓글