for (int i = 0; i<arr.length; i++) {
for(int j = 0; j<arr[i].length; j++) {
arr[i][j] = num++;
}
}
+> 역방향 우선순회
for(int i = 0; i<arr.length; i++) {
for(int j = arr[i].length-1; j >= 0; j--) {
System.out.print(arr[i][j] + " ");
}
}
i%2
를 통해서 j 값을 역순으로 구하는 코드를 작성할 수 있게 된다. i%2 == 0 ? j : m - 1 -j
로 작성하면 가독성이 높아짐. public class Array_델타배열 {
// 자료구조를 갖는 프로그램은 어던 것이든 동일하므로,
// 멤버 변수로 전역 변수를 델타 배열로 선언할 수 있다.
// 상, 하, 좌, 우 > 순서로 정렬
static int[] dr = {-1, 1, 0, 0};
static int[] dc = {0, 0, -1, 1};
static int[][] map = new int[5][5];
static int r = 2;
static int c = 2;
static void printMap() {
// 상단는 r은 지역변수이고, for문의 r은 멤버 변수이므로
//
for(int i = 0; i < map.length; i++) {
for(int j = 0; j<map[i].length; j++) {
if (i == r && c == j) {
System.out.print("X");
} else {
System.out.print("O");
}
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
printMap();
while(true) {
System.out.println("어디로 이동할까요?");
int d = sc.nextInt();
// r = r + dr[d];
// c = c + dc[d];
// r,c를 변경하기 전에 예외 처리
int nr = r + dr[d];
int nc = c + dc[d];
if( 0 <= nc && nc < map.length && 0<= nr && nr < map.length) {
r = nr;
c =nc;
} else {
System.out.println(" 배열 밖으로 벗어났습니다. ");
}
printMap();
}
}
}
int[][][] arr = new int[3][2][2]