
놓친 포인트
- 위의 문제와 같이 상하좌우 를 탐색해야하는 경우, 방향 탐색용
dx
와dy
배열을 생성한 후 각 요소를 탐색하는 반복문을 설정한다.
for (let i=0; i<arr.length; i++) {
let dx = [-1, 0, 1, 0];
let dy = [0, 1, 0, -1];
}
- break문
- 조건을 충족하지 않을 시(해당 문제에서는: 대상이 되는 봉우리가 상, 하, 좌, 우와 비교했을 때 그들보다 하나라도 작거나 같은 경우) break문으로 빠져나온다.
- 조건을 '충족하는 경우'보다 조건을 '충족하지 않는 경우'로 코드 작성하면 간결해진다.
- flag 설정
- 초기값을
let flag = 1
으로 설정 후, 조건을 충족하지 않을 시에는 flag=0
(거짓 false
)
flag ===1
즉, if(flag)
인 경우에만 카운트answer++
해준다.
코드 참고
function solution(arr) {
let answer = 0;
let n = arr.length;
let dx = [-1, 0, 1, 0];
let dy = [0, 1, 0, -1];
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
let flag = 1;
for (let k = 0; k < 4; k++) {
let nx = i + dx[k];
let ny = j + dy[k];
if (
nx >= 0 &&
nx < n &&
ny >= 0 &&
ny < n &&
arr[nx][ny] >= arr[i][j]
) {
flag = 0;
break;
}
}
if (flag) answer++;
}
}
return answer;
}
let arr = [
[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],
];
console.log(solution(arr));