문제

- 2차원 배열에서 자기 자신보다 상하좌우에서 높은 크기를 가지고 있는 값들이 있는 경우의 개수를 구하기

 

public class Main{
    static int[] dx = {-1,0,1,0};
    static int[] dy = {0,1,0,-1};
    public static int solution(int[][] arr){
        int answer = 0;
        int n = arr.length;

        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr.length; j++){
                boolean flag = true;
                //int current = arr[i][j];
                for(int d=0; d<4; d++){
                    //int nx = arr[i][j]+dx[d];
                    //int ny = arr[i][j]+dy[d];

                    int nx = i+dx[d];
                    int ny = j+dy[d];

                    // 경계선 넘지 않게 체크 0~n-1
                    if(nx>=0 && nx<n && ny>=0 &&ny<n && arr[nx][ny]>=arr[i][j]) { // 현재위치보다 상하좌우가 큼
                       flag = false;
                       break;
                    }
                }
                if(flag){
                    answer++;
                }
            }
        }

        return answer;
    }

+ Recent posts