본문 바로가기
코딩테스트(알고리즘)/해결 못한 문제

[baekjoon] 괄호의 값 2504

by Cafe Mocha 2022. 6. 8.

문제를 풀면서 해결하지 못한 문제에 대해서는 기록을 남기려고 한다.

 

2504번: 괄호의 값 (acmicpc.net)

 

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