코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 7. 봉우리

sangchu 2023. 1. 10. 11:51

N*N 격자판

각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역

격자의 가장자리는 0으로 초기화 되었다고 가정

봉우리 지역이 몇 개 있는 지 알아내기

 

나의 풀이

function solution(arr) {
  let answer = 0;
  let N = arr.length;
  let array = Array.from(Array(N + 2), () => Array(N + 2).fill(0));
  
  // 격자판 세팅
  for (let i = 1; i <= N; i++) {
    for (let j = 1; j <= N; j++) {
      array[i][j] = arr[i - 1][j - 1];
    }
  }

  // 봉우리 찾기
  for (let i = 1; i <= N; i++) {
    for (let j = 1; j <= N; j++) {
      if (
        array[i][j] > array[i - 1][j] &&
        array[i][j] > array[i][j - 1] &&
        array[i][j] > array[i + 1][j] &&
        array[i][j] > array[i][j + 1]
      ) {
        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));