코딩테스트/JavaScript

[코딩테스트] 봉우리

CODE_PLAN 2023. 12. 22. 22:34

나의 풀이

    function solution(arr) {
            let n = arr.length;
            let num = 0;
            for (let i = 0; i < n; i++) {
                for (let j = 0; j < n; j++) {
                    if (arr[i][j] > arr[i][j + 1]) {
                        num++;
                    }
                }
            }
            return num;
        }

        if (arr[i][j] > arr[i + 1][j]) {
            num++;
        }
        // 
        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));
    </script>

우선 아직 알고리즘을 많이 안해봐서 그런지 풀이법이 잘 떠오르지 않았었다.

&& 를 사용해서 조건을 넣어주는것도 오류가 나와서 멘붕..

 

해설 풀이 


            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));

 

풀이 핵심1) dx, dy를 잡고 let nx, ny를 사용해서 위치를 이동하면서 탐색하는것 

풀이 핵심2)  또한 밖으로 나가지 않게 >=0 , <n 이런식으로 범위를 설정해줘야한다