string = input()
save = []
def solution(brk1, brk2, num) :
# 닫히는 괄호라도 맨 앞 글자라면 올바르지 않은 괄호
if len(save) == 0 :
print(0)
exit(0)
count = 0
while save :
pop = save.pop()
# 바로 앞 문자가 여는 괄호일 경우
if pop == brk1 :
# 여는 괄호 전에 숫자가 없었을 때
if count == 0 :
save.append(num)
# 여는 괄호 전에 숫자가 있었을 때
else :
save.append(num*count)
break
# 바로 앞 문자가 짝이 안맞는 여는 괄호일 경우
elif pop == brk2 :
print(0)
exit(0)
# 바로 앞 문자가 숫자일 경우
else :
count += pop
for st in string :
# 어차피 괄호가 닫혀야 올바른 괄호열이므로 닫힌 괄호만 확인
if st == ')' :
solution('(', '[', 2)
elif st == ']' :
solution('[', '(', 3)
# 여는 괄호, 숫자는 다 넣기
else :
save.append(st)
for s in save :
# 닫는 괄호는 append 하지 않았기 때문에 배열에 여는 괄호만 확인
# 배열에 괄호가 남아있다면 올바르지 않은 괄호
if s == '(' or s == '[' :
print(0)
exit(0)
print(sum(save))
st = input()
save = []
def check(now, bracket, num) :
count = 0
if bracket in save :
while save :
val = save.pop()
if val != bracket :
try :
count += int(val)
except :
count = val
else :
if count == 0 :
count = num
else :
count = count * num
break
save.append(count)
else :
save.append(now)
for s in st :
if s == '(' or s == '[' :
save.append(s)
elif s == ')' :
check(s, '(', 2)
elif s == ']' :
check(s, '[', 3)
try :
print(sum(save))
except :
print(0)
이 문제만 거의 15번 넘게 시도하고 3시간 이상 붙잡고 있었다.....ㅠㅠ
결국 다른 분들이 구현한 코드를 참고해서 완료할 수 있었다. (참고)
하지만 내가 구현한 코드가 50%까지 맞다가 틀렸다고 나오는 이유를 도저히 모르겠다...ㅜㅠ
백준에 질문 검색에 나오는 모든 반례를 적용해도 맞다고 나와서 결국 모르는 상태로 그만두었다.
이 문제는 꼭 다음에 한 번 더 풀어야 할 문제 꼭꼭꼭