본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(16) - 다차원배열 (Multidimensional Arrays)

by 머니테크리더 2023. 5. 2.
반응형

자바 다차원배열 대표 이미지
자바 다차원배열 대표 이미지

🔖 INDEX

     

     

    다차원 배열은 배열의 배열로, 여러 차원으로 구성된 배열입니다. 주로, 복잡한 데이터 구조를 다루는 데 사용됩니다. 다차원 배열은 행렬, 테이블, 공간 좌표 등을 나타내는 데 유용하며, 각 차원이 독립적인 길이를 가질 수 있습니다. 자바에서 다차원 배열을 사용하려면 이에 대한 개념을 이해하고, 다차원 배열을 선언하는 방법을 알아야 합니다.

     

    다차원 배열을 사용하는 이유

    다차원 배열은 다음과 같은 이유로 자바 프로그래밍에서 필수적인 자료구조입니다.

    1. 데이터 표현 : 다차원 배열은 다차원 데이터를 표현하는 데 유용합니다. 예를 들어, 2차원 배열은 행렬, 테이블, 그리드 등의 데이터 구조를 나타낼 수 있으며, 3차원 배열은 공간 데이터를 표현하는 데 사용할 수 있습니다.
    2. 데이터 조작 : 다차원 배열은 다양한 데이터 처리 작업에 사용될 수 있습니다. 예를 들어, 행렬 연산, 이미지 처리, 경로 탐색 등의 작업에서 다차원 배열을 사용하여 데이터를 조작할 수 있습니다.
    3. 알고리즘 및 자료구조 : 다차원 배열은 많은 알고리즘 및 자료구조의 기반이 됩니다. 예를 들어, 그래프 이론, 동적 프로그래밍, 최단 경로 알고리즘 등에서 다차원 배열을 사용하여 문제를 해결할 수 있습니다.
    4. 효율적인 메모리 사용 : 다차원 배열은 연속된 메모리 블록에 데이터를 저장합니다. 이를 통해 효율적인 메모리 사용이 가능하며, 캐시 지역성을 활용하여 애플리케이션의 성능을 향상할 수 있습니다.
    5. 편리한 데이터 접근 : 다차원 배열은 간결한 문법으로 다양한 차원의 데이터에 쉽게 접근할 수 있습니다. 인덱스를 사용하여 배열 요소에 접근하거나, 중첩된 반복문을 사용하여 배열을 순회하는 것이 가능합니다.

    이러한 이유로 다차원 배열은 다양한 프로그래밍 상황에서 사용되며, 데이터를 표현하고 조작하는 데 필수적인 도구로 간주됩니다. 다차원 배열을 사용하면 코드의 가독성과 유지 관리성을 높이고, 다양한 애플리케이션에서 높은 성능과 효율성을 달성할 수 있습니다.

     

    다차원 배열의 선언 및 초기화

    다차원 배열을 선언하려면 먼저 해당 배열의 타입을 지정해야 합니다. 이는 기본 타입이나 객체 타입일 수 있으며, 배열의 차원 수에 따라 대괄호([])를 추가합니다. 예를 들어, 정수형 2차원 배열을 선언하려면 int[][] 형식을 사용합니다.

    int[][] twoDimensionalArray;

     

    다차원 배열을 초기화하려면 각 차원의 길이를 지정해야 합니다. 이때, 첫 번째 차원의 길이는 필수이지만, 나머지 차원의 길이는 선택적입니다.

    int[][] twoDimensionalArray = new int[3][4];

    위 예제에서는 3x4 크기의 2차원 배열을 생성합니다. 다른 차원의 길이를 지정하지 않고 초기화하면, 각 차원의 배열을 개별적으로 초기화할 수 있습니다.

    int[][] jaggedArray = new int[3][];
    jaggedArray[0] = new int[2];
    jaggedArray[1] = new int[4];
    jaggedArray[2] = new int[3];

    위 예제에서는 3개의 배열을 포함하는 2차원 배열을 생성하고, 각 배열의 길이를 다르게 초기화합니다. 이를 통해 비정형적인 다차원 배열(예: 가변 길이 배열, 삼각형 배열 등)을 생성할 수 있습니다.

     

    다차원 배열의 선언과 초기화를 동시에 수행하려면 다음과 같이 작성할 수 있습니다.

    int[][] twoDimensionalArray = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    위 예제에서는 3x3 크기의 2차원 정수 배열을 선언하고 초기화합니다. 이 방법은 코드의 간결성을 유지하면서 배열을 선언하고 초기화하는 데 편리합니다. 하지만 이 방법으로 생성된 배열의 길이는 변경할 수 없으므로, 배열의 길이가 고정되어 있을 때만 사용하는 것이 좋습니다. ​

     

     

    이처럼 자바에서 다차원 배열을 사용하려면 다차원 배열의 개념을 이해하고, 다차원 배열을 선언하고 초기화하는 방법을 숙지해야 합니다. 이를 통해 다양한 데이터 구조를 다루는 데 유용한 다차원 배열을 사용할 수 있습니다.

     

    다차원 배열을 선언하고 초기화할 때 주의해야 할 몇 가지 사항들이 있습니다.

     

    1. 길이가 음수인 배열 생성 불가 : 배열의 길이는 양수여야 합니다. 음수 길이의 배열을 생성하려고 하면 'NegativeArraySizeException'이 발생합니다.

     

    2. 잘못된 배열 차원 : 배열 차원의 최대 개수는 255입니다. 이를 초과하는 차원의 배열을 선언하려고 하면 컴파일 에러가 발생합니다.

     

    3. 비정형 배열의 초기화 : 다차원 배열에서 첫 번째 차원을 제외한 나머지 차원의 길이는 선택적입니다. 그러나 각 차원의 배열이 초기화되지 않은 상태에서 해당 배열의 요소에 접근하려고 하면 'NullPointerException'이 발생합니다. 이를 방지하기 위해 각 차원의 배열을 명시적으로 초기화해야 합니다.

     

    4. 배열의 인덱스 범위 확인 : 다차원 배열에서 요소에 접근할 때 인덱스 범위를 벗어나지 않도록 주의해야 합니다. 인덱스 범위를 벗어난 요소에 접근하려고 하면 'ArrayIndexOutOfBoundsException'이 발생합니다. 이를 방지하기 위해 반복문을 사용하여 배열을 순회할 때 인덱스 범위를 확인하세요.

     

    5. 다차원 배열 타입 호환성 : 배열의 타입은 선언 시 결정되며, 다른 타입의 배열을 할당하려고 하면 컴파일 에러가 발생합니다. 예를 들어, int[][] 배열에 double[][] 배열을 할당할 수 없습니다.

     

    다차원 배열을 선언하고 초기화할 때 이러한 주의사항들을 염두에 두면, JAVA 프로그래밍에서 안전하게 다차원 배열을 사용할 수 있습니다. 이를 통해 다양한 데이터 구조를 다루는 데 유용한 다차원 배열을 효과적으로 활용할 수 있습니다.

     

    다차원 배열의 데이터 접근

    다차원 배열에서 데이터에 접근하는 것은 중요한 작업입니다. 데이터 접근에는 배열 요소의 조회, 수정 등이 포함됩니다. 이를 위해 다차원 배열의 인덱스를 올바르게 사용하고, 배열을 안전하게 순회하는 방법을 숙지해야 합니다.

     

    1. 다차원 배열 인덱스 사용

    다차원 배열에서 요소에 접근하려면 각 차원의 인덱스를 사용합니다. 예를 들어, 2차원 배열의 요소에 접근하려면 array[i][j] 형식을 사용합니다.

    int[][] twoDimensionalArray = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    int element = twoDimensionalArray[1][2]; // element는 6입니다.

     

    2. 다차원 배열 순회

    다차원 배열의 모든 요소를 순회하려면 중첩된 반복문을 사용합니다. 예를 들어, 2차원 배열의 모든 요소를 순회하려면 다음과 같이 작성할 수 있습니다.

    for (int i = 0; i < twoDimensionalArray.length; i++) {
        for (int j = 0; j < twoDimensionalArray[i].length; j++) {
            System.out.print(twoDimensionalArray[i][j] + " ");
        }
        System.out.println();
    }

    이 예제에서는 외부 반복문이 행을 순회하고, 내부 반복문이 열을 순회합니다. 이와 유사하게 3차원 배열이나 더 높은 차원의 배열도 중첩된 반복문을 사용하여 순회할 수 있습니다. ​

     

     

    3. 배열 인덱스 범위 확인

    배열에서 요소에 접근할 때 인덱스 범위를 벗어나지 않도록 주의해야 합니다. 인덱스 범위를 벗어난 요소에 접근하려고 하면 'ArrayIndexOutOfBoundsException'이 발생합니다. 이를 방지하기 위해 반복문을 사용하여 배열을 순회할 때 인덱스 범위를 확인하세요. ​

     

    4. 비정형 배열의 접근

    비정형 배열(예: 가변 길이 배열, 삼각형 배열 등)의 경우 각 차원의 길이가 다를 수 있습니다. 이 경우에도 중첩된 반복문을 사용하여 배열을 순회할 수 있으며, 각 차원의 길이를 동적으로 확인하여 요소에 접근할 수 있습니다. 비정형 배열을 사용할 때 각 차원의 길이를 올바르게 확인해야 합니다. ​

     

    5. 빠른 배열 순회를 위한 for-each 문 사용

    자바에서는 for-each 문을 사용하여 간결하게 배열을 순회할 수 있습니다. 이 방법은 배열의 인덱스를 명시적으로 사용하지 않기 때문에 인덱스 범위를 벗어난 요소에 접근할 위험이 줄어듭니다. 다차원 배열에서 for-each 문을 사용하여 요소에 접근하는 방법은 다음과 같습니다.

    or (int[] row : twoDimensionalArray) {
        for (int element : row) {
            System.out.print(element + " ");
        }
        System.out.println();
    }

    이 예제에서는 외부 for-each 문이 2차원 배열의 행을 순회하고, 내부 for-each 문이 각 행의 요소를 순회합니다. ​

     

    6. 다차원 배열에서 데이터 수정

    다차원 배열에서 데이터를 수정하려면 해당 요소의 인덱스에 새 값을 할당합니다. 예를 들어, 2차원 배열의 특정 요소를 수정하려면 다음과 같이 작성할 수 있습니다.

    twoDimensionalArray[1][2] = 42; // 원래 값 6이 42로 수정됩니다.

    데이터를 수정할 때도 인덱스 범위를 벗어나지 않도록 주의해야 합니다. ​

     

    다차원 배열에서 데이터에 안전하게 접근하려면 인덱스 사용법을 이해하고, 배열을 올바르게 순회하는 방법을 숙지해야 합니다. 이를 통해 다차원 배열의 데이터를 효과적으로 처리하고 조작할 수 있습니다.

     

     

    댓글