Skip to content

Commit c068468

Browse files
committed
바둑판
1 parent 259a2bd commit c068468

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

ALGORITHMS/바둑판.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
const getVerticalCount = (h, w, n, board) => {
2+
let result = 0;
3+
4+
// 세로
5+
for (let i = 0; i < w; i++) {
6+
let res = 0;
7+
for (let j = 0; j < h; j++) {
8+
const temp = board[j][i];
9+
if (temp === "0") {
10+
if (res === n) result++;
11+
res = 0;
12+
} else {
13+
res++;
14+
if (j === h - 1 && res === n) result++;
15+
}
16+
}
17+
}
18+
19+
return result;
20+
};
21+
22+
const rightPad = (str, len) => {
23+
const strLen = str.length;
24+
return (
25+
str +
26+
(strLen < len
27+
? Array(len - strLen)
28+
.fill(0)
29+
.join("")
30+
: "")
31+
);
32+
};
33+
34+
function solution(h, w, n, board) {
35+
let result = 0;
36+
37+
// 가로
38+
for (let i = 0; i < h; i++) {
39+
const list = board[i];
40+
let res = 0;
41+
Array.from(list).forEach((l, idx) => {
42+
if (l === "0") {
43+
if (res === n) result++;
44+
res = 0;
45+
} else {
46+
res++;
47+
if (idx === w - 1 && res === n) result++;
48+
}
49+
});
50+
}
51+
52+
// 세로
53+
result += getVerticalCount(h, w, n, board);
54+
55+
// 우대각
56+
const rightList = board.map((b, i) => {
57+
return (
58+
Array(h - i - 1)
59+
.fill(0)
60+
.join("") +
61+
b +
62+
Array(i).fill(0).join("")
63+
);
64+
});
65+
result += getVerticalCount(h, w + h - 1, n, rightList);
66+
67+
//좌대각
68+
const leftList = board
69+
.slice()
70+
.reverse()
71+
.map((b, i) => {
72+
return (
73+
Array(h - i - 1)
74+
.fill(0)
75+
.join("") +
76+
b +
77+
Array(i).fill(0).join("")
78+
);
79+
});
80+
result += getVerticalCount(h, w + h - 1, n, leftList);
81+
82+
return result;
83+
}

0 commit comments

Comments
 (0)