다차원 배열 정리
2차원 배열 순회
- 2차원 배열(2열 배열), 순회
- 1열배열을 위로 쌓으면 2열배열이 되고 이걸 2차원 배열이라고 합니다.
- 1차원 배열과 2차원 배열을 이해하기 쉽도록 그림으로 표현하면 아래와 같습니다.
2차원 배열 선언
- 선언
- 2차원 배열을 선언할때는 1차원 배열에 대괄호를 하나더 추가해주면 됩니다.
- int[][] array
- int array[][]
- int[] array[]
- 1차원 배열과 2차원 배열의 선언에 따른 저장소 할당의 차이점을 그림으로 표현하면 아래와 같습니다. (노란색 네모안의 코드로 해당 값을 하나의 변수로써 저장하거나 조회할 수 있습니다.)
- 2차원 배열을 선언할때는 1차원 배열에 대괄호를 하나더 추가해주면 됩니다.
2차원 배열 생성 및 초기화
- 생성
- 2차원 배열을 생성할때도 대괄호를 하나더 추가하면 됩니다.
- int[][] array = new int[][];
- 2차원 배열을 생성할때도 대괄호를 하나더 추가하면 됩니다.
- 초기화
- 2차원 배열을 초기화는 아래 2가지 방법이 있습니다.
- 중괄호를 사용해 선언과 동시에 초기화 합니다.
// 중괄호를 사용해 초기화 int[][] array = { {1, 2, 3}, {4, 5, 6} };
- 선언 / 생성 이후 반복문을 통해 초기화를 합니다.
// 반복문을 통한 초기화 int[][] array = new int[2][3]; // 최초 선언 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { arr[i][j] = 0; // i, j 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부릅니다. } }
- 중괄호를 사용해 선언과 동시에 초기화 합니다.
- 2차원 배열을 초기화는 아래 2가지 방법이 있습니다.
가변 배열
- Java 프로그래밍 에서는 2차원 배열을 생성할 때 열의 길이를 생략하여, 행마다 다른 길이의 배열을 요소로 저장할 수 있습니다.
- 이렇게 행마다 다른 길이의 배열을 저장할 수 있는 배열을 가변 배열이라고 합니다.
-
// 가변 배열 // 선언 및 초기화 int[][] array = new int[3][]; // 배열 원소마다 각기다른 크기로 지정 가능합니다. array[0] = new int[2]; array[1] = new int[4]; array[2] = new int[1]; // 중괄호 초기화할때도 원소배열들의 크기를 각기 다르게 생성 가능합니다. int[][] array2 = { {10, 20}, {10, 20, 30, 40}, {10} };
2차원 배열 이상의 다차원 배열 이해
- 2차원 배열외에도 3차원, 4차원 등..이 있지만 거의 대부분 3차원 까지만 사용하는 경우가 많습니다.
- 3차원 배열이란
- 3차원 배열 선언은 2차원 배열 생성에 괄호를 하나 더해주면 됩니다.
- ex) int[][][] multiArray
- 초기화 할때는 중괄호를 더추가하면 됩니다.
- {{{배열원소1}, {배열원소2}}, {{배열원소3}}}와 같은 형태로 초기화가 가능합니다.
- 3차원 배열 선언은 2차원 배열 생성에 괄호를 하나 더해주면 됩니다.
다차원 배열 조회
- 2차원 배열 조회할때는 2차원 인덱스를 가진만큼 2중 반복문을 통해 출력할 수 있습니다.
- 2중 반복문을 통해 가변 배열도 출력 가능합니다.
-
// 가변 2차원 배열 조회 int[][] array = { {10, 20, 30}, {10, 20, 30, 40}, {10, 20} }; for (int i = 0; i < array.length; i++) { // 1차원 길이 for (int j = 0; j < array[i].length; j++) { // 2차원 길이 System.out.println(array[i][j]); // 2중 반복문으로 i, j 인덱스 순회 } } // 출력 10 20 30 10 20 30 40 10 20 // 최대값 구하기 int[] arr = { 3, 2, 1, 5, 1 }; // 최대값 초기값 세팅 int max = arr[0]; // 최대값 구하기 for (int num : arr) { if (num > max) { // 반복문 돌면서 나(max)보다 값이 작으면 저장 max = num; } } // 최대값 5 출력 System.out.println(max); // 최소값 구하기 int[] arr = { 3, 2, 1, 5, 1 }; // 최소값 초기값 세팅 int min = arr[0]; // 최소값 구하기 for (int num : arr) { if (num < min) { // 반복문 돌면서 나(min)보다 값이 작으면 저장 min = num; } } // 최소값 1 출력 System.out.println(min);
'JAVA' 카테고리의 다른 글
[JAVA] - 컬렉션 (1) | 2024.01.09 |
---|---|
[JAVA] - String 배열 (0) | 2024.01.09 |
[JAVA] - 깊은 복사 (Deep Copy) & 얕은 복사(Shallow Copy) (0) | 2024.01.08 |
[JAVA] - 배열 (0) | 2024.01.08 |
[JAVA] - break, continue (0) | 2024.01.08 |