이 문제를 푸는 데 정말 많은 시간이 걸렸던 거 같다.
우선 문제에 대해서 간략이 정리하자면,
'(' 또는 ')', '[', ']'로 구성된 문자열들이 입력으로 주어진다.
() => 2점 ,
[] => 3점,
(X) => X*2점,
[X] => X*3점,
XY => X + Y의 규칙을 가진다.
이 점수를 계산하라는 문제였다.
문제의 핵심은 괄호들을 stack에 쌓이면서 중간중간의 연산된 값 역시 같이 스택에 쌓는 것이다.
또 문제에서 잘못된 입력에는 0을 뱉으라고 했으므로 이에 대한 조건이 필요하다.
예외)
(1) 모든 입력에 대한 연산이 끝났는데도 stack에 괄호가 남아있을 때
(2) 연산도중 stack에서 짝이 안 맞는 괄호가 나왔을 때
(3) 연산도중 stack이 비어 버릴 때
이렇게 3가지 정도의 예외를 하드코딩으로 박아줬더니 답이 나왔다.