배열 크기, row좌표, column좌표

* ex) 3 1 1
public class FillCell2_2 {
    static int N;//배열 크기
    static int[][] map; //배열 선언
static boolean inRange(int nx, int ny) {
        if(nx>=0 && nx<N && ny>=0 && ny<N) { //x , y 범위 값 설정
            return true;
        }else {
            return false;
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N=sc.nextInt(); //N 입력받고
        map=new int[N][N]; //map 배열 생성
        
        int x=sc.nextInt(); //기준점이 되는 x좌표
        int y=sc.nextInt(); //기준점이 되는 y좌표
        
        int dx[] = { -1, 1, 0, 0 }; //x좌표
        int dy[] = { 0, 0, 1, -1 }; //y좌표
        
     for(int i=0; i<dx.length; i++) {
            int nx= x+dx[i];
            int ny= y+dy[i];
            if(inRange(nx,ny)) { //범위 설정
                map[nx][ny]=1; // 범위가 true 면 1을 대입 아니면 안한다.
            }
        }
        /// 처리 코드 작성
        
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                System.out.print(map[i][j]+" ");
            }
            System.out.println();
        }
    }
}


8방향 확인 하는 방법


#8방향 확인 하는 방법

static boolean inRange(int nx, int ny) {
        if(nx>=0 && nx<N && ny>=0 && ny<N) { //x , y 범위 값 설정
            return true;
        }else {
            return false;
        }
    }


int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };
int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };
for(int i=0; i<dx.length; i++) {
    int nx= x+dx[i];
    int ny= y+dy[i];
    if(inRange(nx,ny)) { //범위 설정
        map[nx][ny]=1; // 범위가 true 면 1을 대입 아니면 안한다.
        }
}

#입력좌표에서 지정한 칸수만큼 상하좌우로 1 채우기

#입력좌표에서 지정한 칸수만큼 상하좌우로 1 채우기
    입력 : 배열의 크기, row좌표, column좌표, 칸수
    
        for(int i=1; i<=num; i++) {     
            for(int j=0; j<dx.length; j++) {
                int nx=x+dx[j]*i;
                int ny=y+dy[j]*i;
                if(nx>=0 && nx<N && ny>=0 && ny<N) {
                    map[nx][ny]=1;
                }
            }       
        }

칸수 만큼 반복을 처리하는데, * 연산자를 통해서 칸수를 1,2,3,4 씩 늘려갈 수 있도록 설정한다.

여기서 좀 더 생각해보면 지정칸수 만큼 움직이는 문제들에 응용이 가능하다.
한칸, 두칸, 세칸 뛰는 경우 따로 loop를 돌리지 않고도 * 연산자를 통해서 구분이 가능하다.


+ Recent posts