let fs = require('fs');
const inputs = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
//const inputs = fs.readFileSync(__dirname+'/ex2.txt').toString().split('\n');
const input = inputs[0].split('');
let stack = [];
let answer = 0;
let tmp = 1;
let before = '';
for (const i of input) {
if (i === "(") {
stack.push(i);
tmp *= 2;
}
else if (i === "[") {
stack.push(i);
tmp *= 3;
}
else if (i === ")") {
if (stack[stack.length-1] !== "(" || stack.length === 0){
answer = 0;
break;
} else if (before === "(") { //tmp에 곱해둔 상태라 중첩되었을때만 더하기~
answer += tmp;
}
stack.pop();
tmp /= 2;
}
else if (i === "]") {
if (stack[stack.length-1] !== "[" || stack.length === 0){
answer = 0;
break;
} else if (before === "[") {
answer += tmp;
}
stack.pop();
tmp /= 3;
}
before = i; //이전 값 저장
}
if (stack.length !== 0) { //스택이 비지 않았으면
answer = 0;
}
console.log(answer);
문제 푸는 방법을 생각해내기가 좀 어려웠당.. 이틀 뒤 다시 풀어봐야겠다.