Skip to content

Commit af473ff

Browse files
author
Eric
committed
99차 1번 문제풀이
1 parent 46ecf1d commit af473ff

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

live9/test99/문제1/황장현.js

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
const input = require('fs')
2+
.readFileSync(process.platform === 'linux' ? '/dev/stdin' : './input.txt')
3+
.toString()
4+
.trim()
5+
.split('\n')
6+
.map((el) => el.split(' ').map(Number));
7+
8+
function solution(input) {
9+
const N = input[0][0];
10+
const An = input[1];
11+
const 연산자수 = input[2];
12+
13+
let maxResult = -Infinity;
14+
let minResult = Infinity;
15+
16+
function dfs(currentIndex, total, plus, minus, multiply, divide) {
17+
if (currentIndex === An.length) {
18+
maxResult = Math.max(maxResult, total);
19+
minResult = Math.min(minResult, total);
20+
return;
21+
}
22+
23+
const currentNum = An[currentIndex];
24+
25+
if (plus > 0) {
26+
dfs(
27+
currentIndex + 1,
28+
total + currentNum,
29+
plus - 1,
30+
minus,
31+
multiply,
32+
divide
33+
);
34+
}
35+
36+
if (minus > 0) {
37+
dfs(
38+
currentIndex + 1,
39+
total - currentNum,
40+
plus,
41+
minus - 1,
42+
multiply,
43+
divide
44+
);
45+
}
46+
47+
if (multiply > 0) {
48+
dfs(
49+
currentIndex + 1,
50+
total * currentNum,
51+
plus,
52+
minus,
53+
multiply - 1,
54+
divide
55+
);
56+
}
57+
58+
if (divide > 0) {
59+
const result =
60+
total < 0
61+
? -Math.floor(Math.abs(total) / currentNum)
62+
: Math.floor(total / currentNum);
63+
64+
dfs(currentIndex + 1, result, plus, minus, multiply, divide - 1);
65+
}
66+
}
67+
68+
dfs(1, An[0], ...연산자수);
69+
const result = [];
70+
result.push(maxResult);
71+
result.push(minResult);
72+
73+
return result.join('\n');
74+
}
75+
76+
console.log(solution(input));

0 commit comments

Comments
 (0)