어제 오늘 내일

[Java] 2차원 배열의 길이 구하기 본문

IT/Java

[Java] 2차원 배열의 길이 구하기

hi.anna 2021. 4. 18. 10:42

지난 번에는 Java에서 배열의 길이를 구하는 방법을 알아보았습니다.

[Java] 배열의 길이 구하기, length 속성

 

이번에는 length 속성을 사용하여

2차원 배열의 길이를 구하는 방법을 소개합니다.

 

 

2차원 배열은

row(행)와 column(열)을 가지고 있고,

각 row(행)는 같은 개수, 또는 각각 다른 개수의 column(열)을 가지고 있을 수 있습니다.

위 그림은, row가 각각 다른 개수의 column(열)을 가지고 있는 예제입니다.

(가변길이배열(Jagged Array)라고 합니다.)

(row가 같은 개수의 column(열)을 가지는 케이스의 원소 개수를 구하는 것은

가변길이배열의 원소 개수를 구하는 것에 비해 쉽습니다.

그러므로, 먼저 가변길이배열 원소의 갯수를 구하는 법을 살펴보겠습니다.)

 

위 그림은

3개의 row를 가지고 있고,

첫번째 row는 3개의 column을,

두번째 row는 2개의 column을,

세번째 row는 4개의 column을 가지고 있습니다.

물론, 모든 row가 같은 갯수의 column을 가지고 있을 수도 있습니다.

 

다음은 위 그림과 같은 형태의

2차원 배열의 row와 column 개수를 구하는 예제입니다.

 

 

가변길이배열(Jagged Array)

1. row 길이, 각 row별 원소 갯수 구하기

 코드 

public class ArrayExam {
    public static void main(String[] args) {

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        // row 길이
        System.out.println("arr length : " + arr.length);

        // 각 row의 column 길이
        System.out.println("1 번째 행의 원소 수 : " + arr[0].length);
        System.out.println("2 번째 행의 원소 수 : " + arr[1].length);
        System.out.println("3 번째 행의 원소 수 : " + arr[2].length);

    }
}

 결과 

arr length : 3
1 번째 행의 원소 수 : 3
2 번째 행의 원소 수 : 2
3 번째 행의 원소 수 : 4

위 예제에서 arr는

위 그림과 같이

3개의 row와 

각각의 row가 3개, 2개, 4개의 원소를 가지는 2차원 배열입니다.

 

arr.length;

row의 갯수를 구합니다.

 

arr[0].length;

arr[1].length;

arr[2].length;

각 row가 가지고 있는 column 갯수를 구합니다.

 

 

2. 반복문을 사용하여 row별 원소 갯수 구하기

 코드 

public class ArrayExam {
    public static void main(String[] args) {

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        // row 길이
        System.out.println("arr length : " + arr.length);

        // 각 row의 column 길이
        for (int i = 0; i < arr.length; i++) {
            System.out.println((i+1) + "번째 행의 원소 수 : " + arr[i].length);
        }
    }
}

 결과 

arr length : 3
1번째 행의 원소 수 : 3
2번째 행의 원소 수 : 2
3번째 행의 원소 수 : 4

1번 예제는 

위와 같이 반복문으로 표현 할 수도 있습니다.

 

 

3. 배열 전체의 원소 갯수(총합) 구하기

 코드 

public class ArrayExam {
    public static void main(String[] args) {

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        int count = 0;

        // row 길이
        System.out.println("arr length : " + arr.length);

        // 각 row의 column 길이
        for (int i = 0; i < arr.length; i++) {
            System.out.println((i+1) + "번째 행의 원소 수 : " + arr[i].length);
            count += arr[i].length;
        }

        // 전체 원소의 갯수
        System.out.println("전체 원소의 개수 : " + count);
    }
}

 결과 

arr length : 3
1번째 행의 원소 수 : 3
2번째 행의 원소 수 : 2
3번째 행의 원소 수 : 4
전체 원소의 개수 : 9

row와 column 상관 없이 

전체 원소의 갯수를 구하고 싶다면

위 코드와 같이

각 row를 순회하면서(for문 사용)

각 row의 원소의 갯수(column 갯수)를 count 변수에 누적해 주면 됩니다.

 

 

 

 

고정 길이 배열 원소 갯수 구하기

 코드 

public class ArrayExam {
    public static void main(String[] args) {

        // 배열
        String[][] arr = { 
                { "A", "B" }, 
                { "C", "D" }, 
                { "E", "F" } 
        };

        // row 길이
        int rowCount = arr.length;
        System.out.println("row length : " + rowCount);

        // column 길이
        int columnCount = arr[0].length;
        System.out.println("column length : " + columnCount);

        // 전체 원소의 갯수
        System.out.println("전체 원소의 개수 : " + (rowCount * columnCount));
    }
}

 결과 

row length : 3
column length : 2
전체 원소의 개수 : 6

고정길이 배열의 길이를 구하는 것은 

가변길이 배열의 길이를 구하는 것보다 비교적 간단합니다.

모든 column의 길이가 같기 때문입니다.

그래서, 고정길이 배열의 column 길이는 for문을 통해 반복적으로 구하지 않고,

0번째 배열의 길이를 가져왔습니다.

어차피, 모든 column의 길이가 같으니까요.

전체 원소의 개수를 구할 때도, 모든 column의 길이 값을 누적할 필요없이

그저 row 길이 * column 길이를 해주었습니다.

 

물론, 

가변길이 배열의 원소 개수를 구하는 로직으로도

고정길이 배열의 원소 개수(길이)를 구할 수 있습니다.

 

 


 

2차원 배열(가변길이배열, 고정길이배열)의

row와 column, 전체 원소 갯수를 구하는 방법을 알아보았습니다.

배열의 값을 출력하는 방법은 아래 포스팅을 참조하세요.

[Java] 배열 값 출력하는 2가지 방법 (반복문, Arrays.toString())

[Java] 2차원 배열 값 출력하는 2가지 방법 (반복문, Arrays 클래스)

 

 

 

반응형
Comments