정다윤 풀이
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt"; const input = require("fs").readFileSync(filePath).toString().trim(); function checkValidation(stack, token) { const reverse = token == ")" ? "(" : "["; const point = token == ")" ? 2 : 3; let sum = 0; while (stack.length) { let top = stack.pop(); if (top === reverse) { let result = sum ? sum * point : point; stack.push(result); return stack; } else if (typeof top === "number") { sum += top; } else { return 0; } } return 0; } function solution(input) { let stack = []; for (let w of input.split("")) { if (!stack) { return 0; } if (w === "(" || w === "[") { stack.push(w); } else if (w === ")") { stack = checkValidation(stack, ")"); } else if (w === "]") { stack = checkValidation(stack, "]"); } else { return 0; } } if (!stack) return 0; const answer = stack.reduce((acc, cur) => acc + cur, 0); return typeof answer === "number" ? answer : 0; } // 제출 let answer = solution(input); console.log(answer);
김민수 풀이
let input = require('fs').readFileSync("/dev/stdin").toString().trim(); let stack = []; let [answer, value] = [0, 1]; let [inType, outType] = [['(','['], [')',']']]; for(let i = 0; i < input.length; i++){ if(inType.includes(input[i])){ stack.push(input[i]); value *= inType.indexOf(input[i]) + 2 }else{ if(stack.length === 0){ answer = 0; break; } let outIndex = outType.indexOf(input[i]); if(outIndex === -1 || inType.indexOf(stack.pop()) !== outIndex){ answer = 0; break; } if(inType.indexOf(input[i-1]) == outIndex) answer += value; value /= outIndex + 2 } } if(stack.length !== 0) answer = 0; console.log(answer)
하송희 풀이
const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let input = fs.readFileSync(filePath).toString().trim().split(""); let tmpArr = []; for (i = 0; i < input.length; i++) { if (input[i] == "(" || input[i] == "[") { tmpArr.push(input[i]); } if (input[i] == ")") { if (tmpArr[tmpArr.length - 1] == "(") { tmpArr.pop(); tmpArr.push(2); } else if (typeof tmpArr[tmpArr.length - 1] == "number") { if (tmpArr[tmpArr.length - 2] == "(") { let tmpNum = tmpArr.pop(); tmpArr.pop(); tmpArr.push(tmpNum * 2); } else if (typeof tmpArr[tmpArr.length - 2] == "number") { let tmpNum1 = tmpArr.pop(); let tmpNum2 = tmpArr.pop(); while (typeof tmpArr[tmpArr.length - 1] == "number") { tmpNum1 += tmpNum2; tmpNum2 = tmpArr.pop(); } tmpArr.pop(); tmpArr.push((tmpNum1 + tmpNum2) * 2); } else return console.log(0); } else return console.log(0); } if (input[i] == "]") { if (tmpArr[tmpArr.length - 1] == "[") { tmpArr.pop(); tmpArr.push(3); } else if (typeof tmpArr[tmpArr.length - 1] == "number") { if (tmpArr[tmpArr.length - 2] == "[") { let tmpNum = tmpArr.pop(); tmpArr.pop(); tmpArr.push(tmpNum * 3); } else if (typeof tmpArr[tmpArr.length - 2] == "number") { let tmpNum1 = tmpArr.pop(); let tmpNum2 = tmpArr.pop(); while (typeof tmpArr[tmpArr.length - 1] == "number") { tmpNum1 += tmpNum2; tmpNum2 = tmpArr.pop(); } tmpArr.pop(); tmpArr.push((tmpNum1 + tmpNum2) * 3); } else return console.log(0); } else return console.log(0); } } let result = tmpArr.reduce((acc, cur) => acc + cur); if (typeof result != "number") return console.log(0); console.log(result);