생각보다 간단하게 풀린 문제였다. 다만, 문제조건을 잘못 봐서 초기에 조금 헤맸다. n 이상인지 이하인지에 주의하고 범위설정에 유의해야겠다. 이 문제의 경우 1,000,000이 input으로 주어질 경우 output이 없는 문제가 발생하는데 범위를 1,005,000까지 여유있게 잡아주면 문제 없이 실행된다. 그외에는 팰린드롬과 소수판별 알고리즘만 짤 수 있다면 쉽게 해결 가능한 문제였다.
while True :
a = input()
temp = []
if a == "." :
break
for i in a :
if i == '[' or i == '(' :
temp.append(i)
elif i == ']' :
if len(temp) != 0 and temp[-1] == '[' :
temp.pop()
else :
temp.append(']')
break
elif i == ')' :
if len(temp) != 0 and temp[-1] == '(' :
temp.pop()
else :
temp.append(')')
break
if len(temp) == 0 :
print('yes')
else :
print('no')
고수의 풀이
while(l:=input())!='.':
s=''
for i in l:
if i in'()[]':s=(s+i).replace('()','').replace('[]','')
print('yneos'[s>''::2])