Skip to content

Commit 346675c

Browse files
committed
99차 1번 문제풀이
1 parent 46ecf1d commit 346675c

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

live9/test99/문제1/조진우.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
const fs = require("fs");
2+
const input = fs
3+
.readFileSync("./input.txt", "utf8")
4+
// .readFileSync("/dev/stdin", "utf8")
5+
.toString()
6+
.trim()
7+
.split("\n")
8+
.map((line) => line.trim().split(" ").map(Number));
9+
10+
function solution(input) {
11+
const t = input[0][0];
12+
const arr = input[1];
13+
14+
let max = 0;
15+
let min = 0;
16+
17+
const dfs = (index, value, [plus, minus, multiply, divide]) => {
18+
if (index === t) {
19+
max = Math.max(max, value);
20+
min = Math.min(min, value);
21+
return;
22+
}
23+
24+
if (plus > 0)
25+
dfs(index + 1, value + arr[index], [plus - 1, minus, multiply, divide]);
26+
27+
if (minus > 0)
28+
dfs(index + 1, value - arr[index], [plus, minus - 1, multiply, divide]);
29+
30+
if (multiply > 0)
31+
dfs(index + 1, value * arr[index], [plus, minus, multiply - 1, divide]);
32+
33+
if (divide > 0) {
34+
const result =
35+
value < 0
36+
? -Math.floor(-value / arr[index])
37+
: Math.floor(value / arr[index]);
38+
dfs(index + 1, result, [plus, minus, multiply, divide - 1]);
39+
}
40+
};
41+
42+
dfs(1, arr[0], input[2]); // (index, value, [plux, minus, multiply, divide])
43+
44+
return `${max}\n${min}`;
45+
}
46+
47+
console.log(solution(input));

0 commit comments

Comments
 (0)