방향(상하좌우) 탐색

Robin·2022년 5월 4일
0

JavaScript 알고리즘

목록 보기
8/9

놓친 포인트

  1. 위의 문제와 같이 상하좌우 를 탐색해야하는 경우, 방향 탐색용 dxdy 배열을 생성한 후 각 요소를 탐색하는 반복문을 설정한다.
for (let i=0; i<arr.length; i++) {
	let dx = [-1, 0, 1, 0];	
	let dy = [0, 1, 0, -1];
}
  1. break문
  • 조건을 충족하지 않을 시(해당 문제에서는: 대상이 되는 봉우리가 상, 하, 좌, 우와 비교했을 때 그들보다 하나라도 작거나 같은 경우) break문으로 빠져나온다.
  • 조건을 '충족하는 경우'보다 조건을 '충족하지 않는 경우'로 코드 작성하면 간결해진다.
  1. 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));
profile
Always testing, sometimes dog walking

0개의 댓글

관련 채용 정보