이 문제를 푸는 데 정말 많은 시간이 걸렸던 거 같다. 

우선 문제에 대해서 간략이 정리하자면, 

'(' 또는 ')', '[', ']'로 구성된 문자열들이 입력으로 주어진다. 

() => 2점 , 

[] => 3점, 

(X) => X*2점, 

[X] => X*3점, 

XY => X + Y의 규칙을 가진다. 

이 점수를 계산하라는 문제였다. 

문제의 핵심은 괄호들을 stack에 쌓이면서 중간중간의 연산된 값 역시 같이 스택에 쌓는 것이다

또 문제에서 잘못된 입력에는 0을 뱉으라고 했으므로 이에 대한 조건이 필요하다. 

예외) 

(1) 모든 입력에 대한 연산이 끝났는데도 stack에 괄호가 남아있을 때

(2) 연산도중 stack에서 짝이 안 맞는 괄호가 나왔을 때 

(3) 연산도중 stack이 비어 버릴 때

이렇게 3가지 정도의 예외를 하드코딩으로 박아줬더니 답이 나왔다. 

'알고리즘문제풀이' 카테고리의 다른 글

더블릿_인수분해  (0) 2015.04.03
더블릿_피타고라스 정리  (0) 2015.04.03
2493_탑  (0) 2015.04.01
1068_트리  (0) 2015.04.01
1991_트리순회  (0) 2015.04.01
Posted by slender ankles
,