๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ง๋ขฐ์ ์ธ์ ํ ์, ์๋, ์ข, ์ฐ ๋๊ฐ์ ์นธ์ ๋ชจ๋ ์ํ์ง์ญ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
image.png
์ง๋ขฐ๋ 2์ฐจ์ ๋ฐฐ์ด board์ 1๋ก ํ์๋์ด ์๊ณ board์๋ ์ง๋ขฐ๊ฐ ๋งค์ค ๋ ์ง์ญ 1๊ณผ, ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.
์ง๋ขฐ๊ฐ ๋งค์ค๋ ์ง์ญ์ ์ง๋ board๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์ ํ ์ง์ญ์ ์นธ ์๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
board๋ n * n ๋ฐฐ์ด์
๋๋ค.
1 โค n โค 100
์ง๋ขฐ๋ 1๋ก ํ์๋์ด ์์ต๋๋ค.
board์๋ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 1๊ณผ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.
์ ์ถ๋ ฅ ์
board | result |
---|---|
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0]] | 16 |
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 1, 0], [0, 0, 0, 0, 0]] | 13 |
[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]] | 0 |
function solution(board) {
const max = board.length
let arr = makeZero(max)
let one = []
for(let i=0; i<max; i++){
for(let j=0; j<max; j++){
if(board[i][j] === 1) one.push([i+1,j+1])
}
}
for(let [x,y] of one){
for(let i=x-1; i<=x+1; i++){
for(let j=y-1; j<=y+1; j++){
arr[i][j] = 1
}
}
}
let count = 0
for(let i=1; i<=max; i++){
for(let j=1; j<=max; j++){
if(arr[i][j] === "0") count++
}
}
return count
}
function makeZero(num){
num += 2
const five = "0".repeat(num)
let arr = []
for(let i=0; i<num; i++){
arr.push(five)
}
return arr.map(el=>[...el])
}
board
์ ๊ธธ์ด๋ณด๋ค 2๋งํผ ํฐ 2์ฐจ์ ๋ฐฐ์ด arr
์ ์์ฑํ๋คboard[0][0] = 1
์ด๋ฉด ์ํํ ๋ board[-1][-1]๋ถํฐ ํ๊ฒ๋๋๋ฐ ์กด์ฌํ์ง ์๋ ์์น์ ์ ๊ทผํ๋ คํ๋ฉด ์๋ฌ๊ฐ ๋จ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ! function solution(board) {
const max = board.length
let arr = makeZero(max)
// ์ดํ 2 ~ 4.
}
function makeZero(num){
num += 2
const five = "0".repeat(num)
let arr = []
for(let i=0; i<num; i++){
arr.push(five)
}
return arr.map(el=>[...el])
}
board
์ 1
์ ์์น๋ฅผ arr
์ ๋ง๊ฒ ์กฐ์ ํ ์์น๋ฅผ ๋ด์ ๋ฐฐ์ด one
์ ์์ฑํ๋ค let one = []
for(let i=0; i<max; i++){
for(let j=0; j<max; j++){
if(board[i][j] === 1) one.push([i+1,j+1])
}
}
arr
์ ๋ํ์ฌ one
์ ์๋ ์์๋ฅผ ์ค์ฌ์ผ๋ก ์ํ์ข์ฐ ๋๊ฐ์ ์ ์์น์ 1์ ํ ๋นํ๋ค for(let [x,y] of one){
for(let i=x-1; i<=x+1; i++){
for(let j=y-1; j<=y+1; j++){
arr[i][j] = 1
}
}
}
arr
์ ๋ํ์ฌ ๊ฐ์ด "0"์ด๋ฉด count๋ฅผ ์ฆ๊ฐ์ํจ๋ค. let count = 0
for(let i=1; i<=max; i++){
for(let j=1; j<=max; j++){
if(arr[i][j] === "0") count++
}
}
return count
์ด๊ฒ 3์ ์ง๋ฆฌ๋ผ๋ ๊ฑฐ์ง๋ง์ด์ง..?
2์ฐจ์ ๋ฐฐ์ด board
์ ๊ธธ์ด๋ณด๋ค 2๋งํผ ํฐ 2์ฐจ์ ๋ฐฐ์ด arr
์ ์์ฑํ๋๋ฐ ์๊ฐ์ด ํ~~~์ฐธ์ด๋ ๊ฑธ๋ ค๋ฒ๋ ธ๋ค
๊ทธ ์ด์ ๋ ์ฒ์์ ์๋์ ๊ฐ์ด ์์ฑํ๋๋ฐ
function makeZero(num){
let arr = []
let zeros = []
for(let i=0; i<num+2; i++){
zeros.push(0)
arr.push(zeros)
}
return arr
}
์ด๋ ๊ฒ ์ถ๋ ฅ๋์๊ธฐ ๋๋ฌธ. ์์ผ๊น?
์์ปค๋ฎค๋ํฐ์ ๋์์ ๋ฐ์;
let arr1 = [[0,0,0],[0,0,0],[0,0,0]]
let arr2 = []
let zeros = []
for(let i=0; i<3; i++){
zeros.push(0)
arr2.push(zeros)
}
console.log("arr1 ์ : ", arr1)
arr1[2][2] = 1
console.log("arr1 ํ: ", arr1)
console.log("arr2 ์ : ", arr2)
arr2[2][2] = 1
console.log("arr2 ํ: ", arr2)
}
๋ผ๊ณ ์๊ฒ ๋์๋ค