[백준] - 2504 괄호의 값 (Javascript)

밀루·2023년 10월 25일
0

BOJ

목록 보기
38/43

문제 링크

코드

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);

문제 푸는 방법을 생각해내기가 좀 어려웠당.. 이틀 뒤 다시 풀어봐야겠다.

profile
이밀루의 도전

0개의 댓글