Skip to content

Commit 92b07c7

Browse files
committed
97차 1번 문제풀이
1 parent b5984d0 commit 92b07c7

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

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

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
11
function solution(board, skill) {
2-
let currentBoard = board;
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+
);
37

48
for (let i = 0; i < skill.length; i++) {
5-
for (let j = skill[i][1]; j <= skill[i][3]; j++) {
6-
for (let k = skill[i][2]; k <= skill[i][4]; k++) {
7-
if (skill[i][0] === 1) {
8-
currentBoard[j][k] -= skill[i][5];
9-
}
10-
if (skill[i][0] === 2) {
11-
currentBoard[j][k] += skill[i][5];
12-
}
13-
}
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];
1429
}
1530
}
1631

1732
let count = 0;
18-
for (let j = 0; j < board.length; j++) {
19-
for (let k = 0; k < board[0].length; k++) {
20-
if (currentBoard[j][k] > 0) count++;
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++;
2136
}
2237
}
2338

0 commit comments

Comments
 (0)