일단, 스택으로 푸는 풀이를 말씀드리면 ' 바깥괄호의 수를 판별해서 같으면 더하고 다르면 곱하면 된다고 생각이 되었는데요 '같이 생각 안하셔도 됩니다.
( [ ] [ ] )와 ( [ [ ] ] ) 이 구분이 안되는 것은 풀이에 상관이 없을 겁니다...스택으로 푸실 거면 그렇습니다(2*(3+3)=12, 2*3*3=18로 다른 것 아닌가용?)
그냥 stack에 쌓아가다 ], )가 나오면 처리하시면 됩니다.
( [ ] [ ] ) 의 경우:
'(' --> '([' --> '([]' = '(3' --> '(3[' --> '(3[]' = '(33'='(6' --> '(6)' = 12
(()[[]])([])의 경우
'(' --> '((' --> '(()' = '(2' --> '(2[' --> '(2[' --> '(2[' --> '(2[[' --> '(2[[]' = '(2[3' --> '(2[3]' = ''(23*3' ="(29" --> '(29)' = '(11)' = '22'
--> ''22(' --> '22([' --> '22([]' = '22(3' --> '22(3)' = '22 6' = '28'
그냥 ), ]가 나오면 '('나 '['가 나오기 전까지 있는 수들을 다 더해주고 만약 수가 없으면 ()는 2, []는 3을 저장하고 아님
2*( 나오기 전까지 있는 수들을 다 더해) , 3*[ 나오기 전까지 있는 수들을 다 더해 ] 같이 순차적으로 처리하시면 됩니당
purpose 5년 전
( [ ] [ ] )와 ( [ [ ] ] ) 의 구별이 안되는 것은 파악했습니다.
바깥괄호의 수를 판별해서 같으면 더하고 다르면 곱하면 된다고 생각이 되었는데요.
그래서 바깥 괄호의 개수를 나타내는 top이용하면 되겠다는 생각이 들었습니다.
바깥 괄호의 개수인 top을 저장해주는 배열을 하나 더 만들어 줘야 하나요?