백준 7490번 JavaScript

yj j·2024년 1월 15일

백준7490번 node.js

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const testCase = Number(input[0]);
let n = 0;

let arr = [];

for (let i = 1; i <= testCase; i += 1) {
  n = Number(input[i]);
  arr = []; //다음 케이스 계산을 위해 초기화
  for (let j = 1; j <= n; j += 1) {
    arr.push(j);
  }
  dfs([], 0);
  console.log("");
}

function dfs(array, depth) {
  if (depth === n - 1) {
    let line = "";
    for (let i = 0; i < n - 1; i += 1) {
      line += arr[i] + array[i];
    }
    line += `${arr[n - 1]}`;
    answer = eval(line.split(" ").join("")); //공백 제거 후 수식 계산
    if (answer === 0) console.log(line);
    return;
  }
  for (let j of [" ", "+", "-"]) {
    array.push(j);
    dfs(array, depth + 1);
    array.pop();
  }
}

+, -, 공백은 중복으로 사용될 수 있는 중복 순열입니다.


아스키 코드 순서대로 출력하는 조건이 있으므로, 부호의 수열을 [' ','+','-'] 순으로 하여야 오답을 받지 않습니다.

profile
꿈꾸는 사람

0개의 댓글