HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤎
프론트엔드 데브코스 5기 교육생
/
🐥
김은수팀
/
🏆
4주차 : 기업 코테 딱대
/
1. 괄호의 값

1. 괄호의 값

문제 선택자
다윤
URL
https://www.acmicpc.net/problem/2504
난이도
골드5

정다윤 풀이

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

안재현 풀이

이승민 풀이