-
JavaScript 알고리즘 | 23_ 지뢰 찾기(배열 십자형태로 비교)► JS Algorithm/Basic 2022. 9. 25. 22:40반응형
🔒 Q
N*N 바둑판이 주어질 때,
자신의 숫자가 상하좌우보다 크면 지뢰가 묻혀있다고 가정하자.
다음과 같이 입력값이 주어질 때, 지뢰가 몇개 있는지 찾으세요.
(단, 바둑판의 가장자리는 0입니다.)
🔒 ex
입력값 [5, 3, 7, 2, 3],
[3, 7, 1, 6, 1],
[7, 2, 5, 3, 4],
[4, 3, 6, 4, 1],
[8, 7, 3, 5, 2]출력값 10 🔒 Solution
▼나의풀이
function solution(a) { let answer = 0; let table = a; for (let i = 0; i < table.length; i++) { for (let j = 0; j < table[0].length; j++) { let num = table[i][j]; if ( // table[i-1] 이 있으면 table[i-1][j]로 진행 // 없으면 0 임 num > ((table[i - 1] && table[i - 1][j]) || 0) && // 자신의 위랑 비교 num > (table[i][j - 1] || 0) && // 자신의 좌측이랑 비교 num > ((table[i + 1] && table[i + 1][j]) || 0) && // 자신의 아래랑 비교 num > (table[i][j + 1] || 0) // 자신의 우측이랑 비교 ) { answer++; } } } return answer; } console.log( solution([ [5, 3, 7, 2, 3], [3, 7, 1, 6, 1], [7, 2, 5, 3, 4], [4, 3, 6, 4, 1], [8, 7, 3, 5, 2], ]) );
바둑판 밖으로 나가면 0을 만들어야하는데, 그부분의 붉은 에러를 해결하는게 내능력불가였다.
바둑판을 나가는 인덱스의 값이 존재할때만 계속 진행하고,
존재하지 않을때는 0으로 넘어가는 &&과 ||의 새로운 활용법을 터득하였다.* 에러 해결전 코드: (table[i - 1][j] || 0)
table[i - 1][j]의 값이 존재하지 않으면 0으로 넘어가! 라고 구현하고 싶었다.
인덱스 중에 -1이라는 인덱스가 없는데, -1인 i인덱스에서 j를 찾아야해서 오류가 난듯 ..? 하다
* 에러 해결후 코드: ((table[i - 1] && table[i - 1][j]) || 0)
table[i - 1]의 값이 존재하면 table[i - 1][j]를 진행해.
없으면 그냥 내부괄호 코드는 false로 하고, 내부괄호가 false니까 0으로 그냥 넘어가! 라고해서 해결됨반응형'► JS Algorithm > Basic' 카테고리의 다른 글
JavaScript 알고리즘 | 25_ 회문 찾기 (0) 2022.09.28 JavaScript 알고리즘 | 24_ 회문 찾기 (문자열 순서 반대로 바꾸기) (0) 2022.09.25 JavaScript 알고리즘 | 22_바둑판 최대값 구하기(가로,세로,대각선) (0) 2022.09.25 JavaScript 알고리즘 | 18_ 앞사람보다 큰 사람 선별(배열의 앞인덱스와 비교) (0) 2022.08.31 JavaScript 알고리즘 | 17_앞 숫자보다 작은 숫자 착출(배열의 앞 인덱스와 비교) (0) 2022.08.30