Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ง๋ ๋ณธ๋ฌธ
๐ ๋ฌธ์
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ๊ณผ ์ง๋ขฐ์ ์ธ์ ํ ์, ์๋, ์ข, ์ฐ ๋๊ฐ์ ์นธ์ ๋ชจ๋ ์ํ์ง์ญ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
์ง๋ขฐ๋ 2์ฐจ์ ๋ฐฐ์ด board์ 1๋ก ํ์๋์ด ์๊ณ board์๋ ์ง๋ขฐ๊ฐ ๋งค์ค ๋ ์ง์ญ 1๊ณผ, ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.
์ง๋ขฐ๊ฐ ๋งค์ค๋ ์ง์ญ์ ์ง๋ board๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์ ํ ์ง์ญ์ ์นธ ์๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- board๋ n * n ๋ฐฐ์ด์ ๋๋ค.
- 1 ≤ n ≤ 100
- ์ง๋ขฐ๋ 1๋ก ํ์๋์ด ์์ต๋๋ค.
- board์๋ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 1๊ณผ ์ง๋ขฐ๊ฐ ์๋ ์ง์ญ 0๋ง ์กด์ฌํฉ๋๋ค.
๐ก ์์ด๋์ด
board์ ๋๊ฐ์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ 0์ผ๋ก ์ด๊ธฐํ ํด์ค๋ค.
board๋ฅผ ๋๋ฉด์ 1์ด๋ฉด ๋ง๋ ๋ฐฐ์ด์ ๊ทธ ์์์ ์, ํ, ์ข, ์ฐ, ๋๊ฐ์ ์ 1๋ก ๋ง๋ค์ด์ค๋ค.
์ด๋, index๊ฐ 0๋ณด๋ค ์์์ง๊ฑฐ๋, ๋ฐฐ์ด์ size๋ณด๋ค ์ปค์ง๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก if ๋ฌธ์ผ๋ก ๊ตฌํํด์ค๋ค.
โ๏ธ ํ์ด
function solution(board) {
var answer = 0;
let size = board.length;
let safeZone = new Array(size)
for(let i=0; i<safeZone.length; i++){
safeZone[i] = new Array(size);
safeZone[i].fill(0);
}
for(let i=0; i<board.length; i++){
for(let j=0; j<board[i].length; j++){
if(board[i][j] === 1){
safeZone[i][j] = 1;
if(i-1 >= 0){
safeZone[i-1][j] = 1;
}
if(j-1 >= 0){
safeZone[i][j-1] = 1;
}
if(i-1 >= 0 && j-1 >= 0){
safeZone[i-1][j-1] = 1;
}
if(i+1 < size){
safeZone[i+1][j] = 1;
}
if(j+1 < size){
safeZone[i][j+1] = 1;
}
if(i+1 < size && j+1 < size){
safeZone[i+1][j+1] = 1;
}
if(i-1 >= 0 && j+1 < size){
safeZone[i-1][j+1] = 1;
}
if(i+1 < size && j-1 >= 0){
safeZone[i+1][j-1] = 1;
}
}
}
}
for(let i=0; i<safeZone.length; i++){
for(let j=0; j<safeZone[i].length; j++){
if(safeZone[i][j] === 0){
answer++;
}
}
}
return answer;
}
โฐ ๋ด๊ฐ ํ์ง๋ง ์ด๊ฒ ๋ง๋ ์ถ๋ค..;
โ๏ธ ๋จ์ ํ์ด (์์ ํ์ ์ฌ์ฉ)
function solution(board) {
const N = board.length
const dx = [-1, 1, 0, 0, -1, -1, 1, 1]
const dy = [0, 0, -1, 1, -1, 1, -1, 1]
// ์ง๋ขฐ๊ฐ ์ค์น๋ ๊ณณ
const booms = []
for (let x = 0; x < N; x++) {
for (let y = 0; y < N; y++) {
if (board[x][y] === 1) {
booms.push([x, y])
}
}
}
// ์ง๋ขฐ๊ฐ ์ค์น๋ ๊ณณ ์ฃผ๋ณ์ ํญํ ์ค์น
booms.forEach(([x, y]) => {
for (let i = 0; i < 8; i++) {
const nx = x + dx[i]
const ny = y + dy[i]
if (0 <= nx && nx < N && 0 <= ny && ny < N) {
board[nx][ny] = 1
}
}
})
// ํญํ์ด ์ค์น๋์ง ์์ ๊ณณ๋ง ์นด์ดํ
let count = 0
for (let x = 0; x < N; x++) {
for (let y = 0; y < N; y++) {
if (board[x][y] === 0) {
count++
}
}
}
return count
}
โฐ ํจ์ฌ ๋ณด๊ธฐ์ข๋ค..
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ถ์์ ๋ง์ (0) | 2023.02.03 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฐ์๋ ์์ ํฉ (0) | 2023.02.03 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (0) | 2023.02.03 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋๋ง์ ์ํธ (0) | 2023.02.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ (0) | 2023.02.02 |