Skip to content

Commit 18fdea9

Browse files
Merge pull request #672 from eric-hjh/main
[황장현] 101차 라이브 코테 제출
2 parents efa8c96 + aa4d846 commit 18fdea9

5 files changed

Lines changed: 149 additions & 22 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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 T = input[0][0];
10+
const dp = Array(12).fill(0);
11+
const result = [];
12+
dp[1] = 1;
13+
dp[2] = 2;
14+
dp[3] = 4;
15+
16+
function 재귀(n) {
17+
if (dp[n] !== 0) return dp[n];
18+
19+
dp[n] = 재귀(n - 1) + 재귀(n - 2) + 재귀(n - 3);
20+
return dp[n];
21+
}
22+
23+
for (let i = 1; i <= T; i++) {
24+
const currentIndex = input[i][0];
25+
result.push(재귀(currentIndex));
26+
}
27+
return result.join('\n');
28+
}
29+
30+
console.log(solution(input));
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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 cost = input.slice(1);
11+
const dp = Array.from({ length: N + 1 }, () => Array(3).fill(0));
12+
13+
dp[1][0] = cost[0][0];
14+
dp[1][1] = cost[0][1];
15+
dp[1][2] = cost[0][2];
16+
17+
for (let i = 2; i <= N; i++) {
18+
dp[i][0] = cost[i - 1][0] + Math.min(dp[i - 1][1], dp[i - 1][2]);
19+
dp[i][1] = cost[i - 1][1] + Math.min(dp[i - 1][0], dp[i - 1][2]);
20+
dp[i][2] = cost[i - 1][2] + Math.min(dp[i - 1][0], dp[i - 1][1]);
21+
}
22+
23+
return Math.min(dp[N][0], dp[N][1], dp[N][2]);
24+
}
25+
26+
console.log(solution(input));
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
function solution(n, edge) {
2+
const connects = new Array(n).fill().map((_) => []);
3+
for (const e of edge) {
4+
connects[e[0] - 1].push(e[1] - 1);
5+
connects[e[1] - 1].push(e[0] - 1);
6+
}
7+
8+
const visited = [1];
9+
const queue = [0];
10+
while (queue.length) {
11+
const cur = queue.shift();
12+
13+
for (const next of connects[cur]) {
14+
if (!visited[next]) {
15+
visited[next] = visited[cur] + 1;
16+
queue.push(next);
17+
}
18+
}
19+
}
20+
21+
const max = Math.max(...visited);
22+
23+
return visited.filter((el) => el === max).length;
24+
}
25+
26+
console.log(
27+
solution(6, [
28+
[3, 6],
29+
[4, 3],
30+
[3, 2],
31+
[1, 3],
32+
[1, 2],
33+
[2, 4],
34+
[5, 2],
35+
])
36+
);

live9/test100/문제2/황장현.js

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,40 @@ const input = +require('fs')
33
.toString()
44
.trim();
55

6-
function solution(input) {
7-
const N = input;
6+
function solution(N) {
87
let count = 0;
8+
const column = Array(N).fill(false);
9+
const diagonal1 = Array(2 * N - 1).fill(false);
10+
const diagonal2 = Array(2 * N - 1).fill(false);
911

10-
function backTrack(y, x, idx, map) {
11-
if (idx === N) {
12+
function backTrack(row) {
13+
if (row === N) {
1214
count++;
1315
return;
1416
}
1517

16-
for (let i = 0; i < N; i++) {
17-
map[y][i] = 1;
18-
map[i][x] = 1;
19-
if (y + i < N && x + i < N) map[y + i][x + i] = 1;
20-
if (y - i >= 0 && x - i >= 0) map[y - i][x - i] = 1;
21-
if (y + i < N && x - i >= 0) map[y + i][x - i] = 1;
22-
if (y - i >= 0 && x + i < N) map[y - i][x + i] = 1;
23-
}
18+
for (let col = 0; col < N; col++) {
19+
if (
20+
column[col] ||
21+
diagonal1[row + col] ||
22+
diagonal2[row - col + (N - 1)]
23+
) {
24+
continue;
25+
}
2426

25-
for (let i = 0; i < N; i++) {
26-
const nextY = y + 1;
27-
if (nextY < N && map[nextY][i] === 0) backTrack(nextY, i, idx + 1, map);
28-
else break;
29-
}
30-
}
27+
column[col] = true;
28+
diagonal1[row + col] = true;
29+
diagonal2[row - col + (N - 1)] = true;
3130

32-
for (let i = 0; i < N; i++) {
33-
for (let j = 0; j < N; j++) {
34-
const chessMap = Array.from({ length: N }, () => Array(N).fill(0));
35-
backTrack(i, j, 1, chessMap);
31+
backTrack(row + 1);
32+
33+
column[col] = false;
34+
diagonal1[row + col] = false;
35+
diagonal2[row - col + (N - 1)] = false;
3636
}
3737
}
38+
39+
backTrack(0);
3840
return count;
3941
}
4042

live9/test100/문제3/황장현.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function solution(queue1, queue2) {
2+
let sum1 = queue1.reduce((acc, cur) => acc + cur, 0);
3+
let sum2 = queue2.reduce((acc, cur) => acc + cur, 0);
4+
5+
let count = 0;
6+
let maxOperations = queue1.length * 3;
7+
8+
let idx1 = 0;
9+
let idx2 = 0;
10+
let totalQueue = [...queue1, ...queue2];
11+
12+
while (sum1 !== sum2) {
13+
if (count > maxOperations) return -1;
14+
15+
if (sum1 < sum2) {
16+
const popNum = totalQueue[idx2 + queue1.length];
17+
sum2 -= popNum;
18+
sum1 += popNum;
19+
idx2++;
20+
} else {
21+
const popNum = totalQueue[idx1];
22+
sum1 -= popNum;
23+
sum2 += popNum;
24+
idx1++;
25+
}
26+
count++;
27+
}
28+
29+
return count;
30+
}
31+
32+
console.log(solution([3, 2, 7, 2], [4, 6, 5, 1]));
33+
console.log(solution([1, 2, 1, 2], [1, 10, 1, 2]));

0 commit comments

Comments
 (0)