Java 프로그래밍 - 다차원 배열

김상윤·2022년 3월 31일
0

다차원 배열

기존 일차원 배열의 경우에는 아래와 같은 형식으로 선언하였다.

ex)
int[] myArray1 = {1,2,3,4,5};
char[] myArray2 = {'a','b','c','d','e'};

다차원 배열의 경우에는 각 차원에 따라서 []의 개수를 맞춰주자

ex)
int[][] myArray3 = {{1,2,3},{4,5,6}}; //2차원 배열
int[][][] myArray4 = {{{1,2}, {3,4}}, {{5,6},{7,8}}};

이차원 배열

많이 써봐야 최소 3차원배열까지가 자주쓰이고, 그 이상의 차원은 잘 쓰이지 않는다.
그중에서도, 특히 2차원 배열의 경우는 우리가 앞으로 많이 사용해야 하므로, 2차원 배열에 대해서 중점적으로 다뤄보자.

이차원 배열의 생성방법

c/c++와 마찬가지로 Java또한 행 우선 저장(row major storage)를 따르고 있다.

즉, '다차원 배열을 메모리에 저장하는 순서는 마지막 index가 변하는 순서이다.' 라고 기억해두면 좋을 것 같다.

즉 위의 코드는

1,2,3
4,5,6

이렇게 저장된다.

번외

열 우선 저장을 지향하는 언어가 무엇이 있을까 고민이되어, 구글링을 해본결과...
대표적인 언어로는 fortran을 발견하였다.
fortran은 듣기만 하였지, 아직 제대로 사용해본적은 없어서, 마냥 신기하기만 하였따..

예제

그렇다면, 다차원 배열을 이용해서 풀 수 있는 예제를 하나 풀어보자.

Q1. 아래와 같이 3x3 행렬이 2차원 배열로 초기화 되어있다.
모든 원소를 1로 변경하고, 대각 원소는 10으로 변경하고
각 원소를 출력하시오.
int [][] testArray1 = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};

소스코드

public class Main {
    public static void main(String[] args) {
        int [][] testArray1 = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
        System.out.println(testArray1.length);
        for (int i = 0 ; i < testArray1.length ; i++) {
            for (int j = 0 ; j < testArray1[i].length ; j++) {
                if (i == j)
                    testArray1[i][j] = 10;
                else
                    testArray1[i][j] = 1;
            }
        }
        for (int i = 0 ; i < testArray1.length ; i++) {
            for (int j = 0; j < testArray1[i].length; j++) {
                System.out.println(testArray1[i][j]);
            }
        }
    }
}

출력

10
1
1
1
10
1
1
1
10

어렵지않은 매우 간단한 문제이다.
다만, 본인의 경우에는 Java문법에 대해서 아직 미숙한지라, 로직보다는, 문법에서 매우 많은 수정이 있었던것 같다.
특히, 아직도 다차원배열에서의 []를 계속 까먹고 빼서쓴다ㅡㅡ
앞으로 Java를 몸에 익혀서 빨리 익숙해져야겠다.

profile
알고리즘을 아직도 모르겠다

0개의 댓글