문제를 풀면서 해결하지 못한 문제에 대해서는 기록을 남기려고 한다.
2504번: 괄호의 값
4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일
www.acmicpc.net
내 풀이
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split("\n")
.map((val) => val.trim());
input = input.join("").split("");
let stk = [];
let cal = [];
for (let i = 0; i < input.length; i++) {
if (input[i] === "(" || input[i] === "[") {
stk.push(input[i]);
} else if (input[i] === ")" || input[i] === "]") {
if (input[i] === ")" && stk[stk.length - 1] === "(") {
//() 닫힘
stk.pop();
stk.push(2);
} else if (input[i] === "]" && stk[stk.length - 1] === "[") {
//"[]"닫힘
stk.pop();
stk.push(3);
} else if (typeof stk[stk.length - 1] === "number") {
//숫자
let temp = stk.pop();
let t = stk.length;
for (let i = 0; i < t; i++) {
let last = stk.pop();
if (last === "(" || last === "[") {
stk.push(temp * (last === "(" ? 2 : 3));
break;
} else if (typeof last === "number") {
temp += last;
continue;
}
}
}
}
}
if (stk.includes("(") || stk.includes("[")) {
console.log(0);
} else {
console.log(stk.reduce((a, c) => a + c));
}
}
solution();
테스트 케이스는 답이 나왔으나, 정답은 틀렸다고 함.
히든 케이스가 있는지 풀이가 잘못된지는 모르겠음.
일주일 뒤에 다시 한번 풀어보고 답을 못 찾으면 풀이를 보고 해결할 예정.
'코딩테스트(알고리즘) > 해결 못한 문제' 카테고리의 다른 글
[baekjoon] 퇴사 14501 (0) | 2022.06.11 |
---|