Skip to content

Commit b0fc3df

Browse files
Merge pull request #650 from jinoo0306/main
[조진우] 97차 라이브 코테 제출
2 parents ccbfee3 + 0969f33 commit b0fc3df

2 files changed

Lines changed: 85 additions & 0 deletions

File tree

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

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
function solution(board, skill) {
2+
const row = board.length;
3+
const col = board[0].length;
4+
const sumBoard = Array.from({ length: row + 1 }, () =>
5+
Array(col + 1).fill(0)
6+
);
7+
8+
for (let i = 0; i < skill.length; i++) {
9+
const [type, r1, c1, r2, c2, degree] = skill[i];
10+
const value = type === 1 ? -degree : degree;
11+
12+
sumBoard[r1][c1] += value;
13+
sumBoard[r1][c2 + 1] -= value;
14+
sumBoard[r2 + 1][c1] -= value;
15+
sumBoard[r2 + 1][c2 + 1] += value;
16+
}
17+
18+
// 가로 누적합
19+
for (let i = 0; i <= row; i++) {
20+
for (let j = 1; j <= col; j++) {
21+
sumBoard[i][j] += sumBoard[i][j - 1];
22+
}
23+
}
24+
25+
// 세로 누적합
26+
for (let j = 0; j <= col; j++) {
27+
for (let i = 1; i <= row; i++) {
28+
sumBoard[i][j] += sumBoard[i - 1][j];
29+
}
30+
}
31+
32+
let count = 0;
33+
for (let i = 0; i < row; i++) {
34+
for (let j = 0; j < col; j++) {
35+
if (board[i][j] + sumBoard[i][j] > 0) count++;
36+
}
37+
}
38+
39+
return count;
40+
}
41+
42+
console.log(
43+
solution(
44+
[
45+
[1, 2, 3],
46+
[4, 5, 6],
47+
[7, 8, 9],
48+
],
49+
[
50+
[1, 1, 1, 2, 2, 4],
51+
[1, 0, 0, 1, 1, 2],
52+
[2, 2, 0, 2, 0, 100],
53+
]
54+
)
55+
);

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
function solution(name) {
2+
let nameArr = name.split("");
3+
let totalCount = 0;
4+
5+
// 1. 위아래 조작: 각 문자에 대해 계산
6+
for (let i = 0; i < nameArr.length; i++) {
7+
const charCode = nameArr[i].charCodeAt(0);
8+
const diff = Math.min(charCode - 65, 91 - charCode);
9+
totalCount += diff;
10+
}
11+
12+
// 2. 좌우 조작: 커서를 어떻게 이동하면 최소인지 계산
13+
let minMove = name.length - 1;
14+
15+
for (let i = 0; i < name.length; i++) {
16+
let next = i + 1;
17+
while (next < name.length && name[next] === "A") {
18+
next++;
19+
}
20+
21+
// 좌측으로 갔다가 우측으로 가는 경우 고려
22+
const move = i + name.length - next + Math.min(i, name.length - next);
23+
minMove = Math.min(minMove, move);
24+
}
25+
26+
totalCount += minMove;
27+
return totalCount;
28+
}
29+
30+
console.log(solution("JEROEN"));

0 commit comments

Comments
 (0)