

const { notDeepEqual } = require("assert");
const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim().split('\n');
// const fs = require('fs');
// let input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');
const N = +input[0];
const numbers = input[1].split(" ").map(el=>+el);
const operator = input[2].split(" ").map(el=>+el);
const solution = (input) => {
const operObj = {
0: (oper1, oper2) => oper1 + oper2,
1: (oper1, oper2) => oper1 - oper2,
2: (oper1, oper2) => oper1 * oper2,
3: (oper1, oper2) => {
if (oper1 < 0) {
return -Math.floor(-oper1 / oper2);
}
return Math.floor(oper1 / oper2);
},
};
const temp = [];
let min = Number.MAX_SAFE_INTEGER;
let max = Number.MIN_SAFE_INTEGER;
function dfs(count2) {
if (count2=== N - 1) {
let oper1 = numbers[0];
for (let i = 0; i < temp.length; i++) {
let oper2 = numbers[i + 1];
let idx = temp[i];
oper1 = operObj[idx](oper1, oper2);
}
if (oper1 > max) max = oper1;
if (oper1 < min) min = oper1;
}
for (let i = 0; i < 4; i++) {
if (!operator[i]) continue;
operator[i] -= 1;
temp.push(i);
dfs(count2 + 1);
operator[i] += 1;
temp.pop();
}
}
dfs(0);
return `${max}\n${min}`;
};
console.log(solution(input))
https://gobae.tistory.com/m/49?category=942780
아니... 한 예제가 vscode에서도 안 돌아가고 메모리 초과가 뜨길래 답지를 봤다.
DFS로 풀어야 정상적으로 돌아가더라...