JAVA - array 다차원 배열 : 2차원 배열 -- 02(2022-07-20)
1.가변길이 배열??
이전에 2차원 배열 설명하면서 아주 예쁜 바둑판 형식의 2차원 배열만 소개했었다.
(아주 전형적인 호텔)
이번 2차원 배열은 층(행) 당 방의 개수(열)가 아주 자기주장이 강하다.
그래서 적어도 필자는 이런 배열을 가변길이 배열 이라고 부르기로 했다.
가변길이 배열은 어떤 arr<0x100>이란 주소를 갖고 찾아왔는데 위 그림처럼 복합건물이 있다고 이해하고자 한다.
arr[0]에 배열의 수는 10개
arr[1]에 배열의 수는 5개 이런 식으로 각각의 배열의 수를 갖고 있는 arr[n]라는 배열이 층(행)을 이뤄 하나의 건물을 만든다.
백화점 같은데 가보면 각각의 층마다 입점하고 있는 매장의 개수가 다르다는 걸 연상하면 어떤 느낌인지 쉽게
이해할 듯 하다.
예시로 알아보자.
2. 예제
package arrays_0720;
public class Ex10 {
public static void main(String[] args) {
int arr[][] = new int[][] {
{10,20,30,40},
{50,60},
{70,80,90,100,110},
{120}
};
System.out.println("행의 수 : " + arr.length);
System.out.println("칸의 수 : " + arr[0].length);
System.out.println("칸의 수 : " + arr[1].length);
System.out.println("칸의 수 : " + arr[2].length);
System.out.println("칸의 수 : " + arr[3].length);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
다음 코드를 출력하면?
행의 수 : 4 >>>> 총 4층의 백화점
칸의 수 : 4 >>>> arr[0]층에 입점한 매장 4개
칸의 수 : 2 >>>> arr[1]층에 입점한 매장 2개
칸의 수 : 5 >>>> arr[2]층에 입점한 매장 5개
칸의 수 : 1 >>>> arr[3]층에 입점한 푸드코트(?)
10 20 30 40 >>>> arr[0]층에 입점한 매장
50 60 >>>> arr[1]층에 입점한 매장
70 80 90 100 110 >>>> arr[2]층에 입점한 매장 5개
120 >>>> arr[3]층에 입점한 푸드코트(?)
다음은 직접 행을 생성하고, 각 행에 배열을 만들어보자.
package arrays_0720;
import java.util.Scanner;
public class Ex11 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("몇 행의 배열을 만드시겠습니까? : ");
int length = input.nextInt();
int[][] arr = new int[length][];
System.out.println("각 행에 배열을 만드세요!");
for (int i = 0; i < arr.length; i++) {
System.out.print(i + 1 + "번째 행의 배열 : ");
int n = input.nextInt();
arr[i] = new int[n];
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = j;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
결과
몇 행의 배열을 만드시겠습니까? : 4
각 행에 배열을 만드세요!
1번째 행의 배열 : 6
2번째 행의 배열 : 5
3번째 행의 배열 : 2
4번째 행의 배열 : 3
0 1 2 3 4 5
0 1 2 3 4
0 1
0 1 2