Skip to content

Commit b73d793

Browse files
Merge pull request #660 from jinoo0306/main
[조진우] 99차 라이브 코테 제출
2 parents e2af90a + a419d52 commit b73d793

4 files changed

Lines changed: 117 additions & 1 deletion

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
.DS_Store
33
/out
44
out
5-
*.iml
5+
*.iml
6+
**/input.txt

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 = -Infinity;
15+
let min = Infinity;
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));

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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 [N, M] = input[0];
12+
const arr = input[1];
13+
arr.sort((a, b) => a - b);
14+
15+
const used = Array(N).fill(false);
16+
const result = [];
17+
18+
function dfs(depth) {
19+
if (depth === M) {
20+
console.log(result.join(" "));
21+
return;
22+
}
23+
24+
for (let i = 0; i < N; i++) {
25+
if (used[i]) continue;
26+
27+
used[i] = true;
28+
result.push(arr[i]);
29+
dfs(depth + 1);
30+
result.pop();
31+
used[i] = false;
32+
}
33+
}
34+
35+
dfs(0);
36+
}
37+
38+
solution(input);

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
function solution(s) {
2+
const isValid = (str) => {
3+
const stack = [];
4+
const pairs = {
5+
")": "(",
6+
"]": "[",
7+
"}": "{",
8+
};
9+
10+
for (const char of str) {
11+
if (char === "(" || char === "[" || char === "{") {
12+
stack.push(char);
13+
} else {
14+
if (stack.pop() !== pairs[char]) return false;
15+
}
16+
}
17+
18+
return stack.length === 0;
19+
};
20+
21+
let count = 0;
22+
for (let i = 0; i < s.length; i++) {
23+
const rotated = s.slice(i) + s.slice(0, i);
24+
if (isValid(rotated)) count++;
25+
}
26+
27+
return count;
28+
}
29+
30+
console.log(solution("[](){}"));

0 commit comments

Comments
 (0)