[코딩테스트연습] 봉우리

최대 1 분 소요

코드


function solution(arr){  
    let answer=0;
    let n=arr.length;
    let dx=[-1, 0, 1, 0];
    let dy=[0, 1, 0, -1];
    
    //이중포문 돌면서 2차원배열 탐색
    for(let i=0; i<n; i++){
        for(let j=0; j<n; j++){

            //현재 칸이 봉우리인지 확인하는 변수
            let flag=true;
            //현재 칸의 상하좌우 값 탐색
            for(let k=0; k<4; k++){
                let nx=i+dx[k];
                let ny=j+dy[k];
                //nx,ny 가 0보다 크면서 (테두리가 아님) 상하좌우값이 현재칸보다 같거나 크면
                if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){
                    //현재 칸은 봉우리가 아님
                    flag=false;
                    break;
                        }
                    }
                //봉우리일때 + 1
                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));