728x90
#4949번 균형잡힌 세상 https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
처음엔 쉬울거라 생각했지만,... 괄호를 판단하는 방법이 기억이 나지않나 과거 코드를 복기했다.
def check(ps_string):
tmp = ps_string.split("()")
tmp = "".join(tmp)
tmp = tmp.split("[]")
tmp = "".join(tmp)
if len(tmp) < len(ps_string):
return check(tmp)
else:
if len(tmp) > 0:
return ("no")
else:
return ("yes")
sens = []
while True:
sen = input()
if sen == ".":
break
sens.append(sen)
for sen in sens:
ps = ""
for s in sen:
if s == "(" or s == ")" or s == "[" or s == "]":
ps += s
print(check(ps))
check 부분에 나와있다. 정상적인 괄호로 스플릿 하고 다시 조인하는걸 재귀적으로 반복하면 된다.
재귀 종료 조건은, 스플릿-조인을 진행한 후에 전체 문자열의 길이가 변하지 않은 상황이다.
끝!
'Algorithm > acmicpc.net' 카테고리의 다른 글
자료구조의 중요성 (실버 4) (0) | 2022.02.28 |
---|---|
아이디어 is null.. (실버2) (0) | 2022.02.25 |
오랜만에 만나 날 당황시키는 이분탐색 (실버3) (0) | 2022.02.25 |
파이썬 시간초과의 늪..(골드3) (0) | 2022.02.24 |
골드2... 판단미스 (0) | 2022.02.23 |