한 걸음씩
[프로그래머스][JS] 안전지대 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120866
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(board) {
const row = board.length // 행 길이
const column = board[0].length // 열 길이
// 행 길이와 열 길이에 맞춰 배열의 요소를 모두 true로 채우기
const array = Array.from({length : row}, () => Array.from({length : column}, () => true))
// 1을 기준으로 사각형 모양으로 인접하는 곳들은 false처리
for (let i = 0; i < board.length; i++){
for (let j = 0; j < board[i].length; j++){
if (board[i][j] === 1){
array[i][j] = false
// if문으로 인덱스를 벗어나지 않도록 처리
// i에서 빼는 경우에는 0보다 클 것 || i에서 더하는 경우는 row보다 작을 것
// j에서 빼는 경우에는 0보다 클 것 || j에서 더하는 경우는 column보다 작을 것
if (i - 1 >= 0) array[i - 1][j] = false;
if (i + 1 < row) array[i + 1][j] = false;
if (j - 1 >= 0) array[i][j - 1] = false;
if (j + 1 < column) array[i][j + 1] = false;
if (i - 1 >= 0 && j - 1 >= 0) array[i - 1][j - 1] = false;
if (i - 1 >= 0 && j + 1 < column) array[i - 1][j + 1] = false;
if (i + 1 < row && j - 1 >= 0) array[i + 1][j - 1] = false;
if (i + 1 < row && j + 1 < column) array[i + 1][j + 1] = false;
}
}
}
// false 개수
const countFalse = array.flat().filter(item => item === false).length
return (row * column) - countFalse;
}
코드 설명은 주석에 ↑
리뷰
나만 이렇게 조건을 많이 달아서 통과한 건가 찜찜해서 다른 사람 풀이도 확인해 봤는데 비슷하게 푼 코드도 있었고
진짜 다양한 풀이들이 있다는걸 알았다
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 둘만의 암호 (0) | 2023.07.20 |
---|---|
[프로그래머스][JS] 캐릭터의 좌표 (0) | 2023.07.20 |
[프로그래머스][JS] [1차] 비밀지도 (0) | 2023.07.19 |
[프로그래머스][JS] 기사단원의 무기✅ (0) | 2023.07.18 |
[프로그래머스][JS] 덧칠하기 (0) | 2023.07.18 |