본문 바로가기
JAVA

[JAVA] - 다차원 배열

by nam_ji 2024. 1. 8.

다차원 배열 정리

2차원 배열 순회

  • 2차원 배열(2열 배열), 순회
    • 1열배열을 위로 쌓으면 2열배열이 되고 이걸 2차원 배열이라고 합니다.
    • 1차원 배열과 2차원 배열을 이해하기 쉽도록 그림으로 표현하면 아래와 같습니다. 

2차원 배열 선언

  • 선언
    • 2차원 배열을 선언할때는 1차원 배열에 대괄호를 하나더 추가해주면 됩니다.
      • int[][] array
      • int array[][]
      • int[] array[]
    • 1차원 배열과 2차원 배열의 선언에 따른 저장소 할당의 차이점을 그림으로 표현하면 아래와 같습니다. (노란색 네모안의 코드로 해당 값을 하나의 변수로써 저장하거나 조회할 수 있습니다.)

2차원 배열 생성 및 초기화

  • 생성
    • 2차원 배열을 생성할때도 대괄호를 하나더 추가하면 됩니다.
      • int[][] array = new int[][];
      •  
  •   초기화
    • 2차원 배열을 초기화는 아래 2가지 방법이 있습니다.
      1. 중괄호를 사용해 선언과 동시에 초기화 합니다.
        // 중괄호를 사용해 초기화
        
        int[][] array = {
        	{1, 2, 3},
        	{4, 5, 6}
        };​
      2. 선언 / 생성 이후 반복문을 통해 초기화를 합니다.
        // 반복문을 통한 초기화
        
        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 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부릅니다.
            }
        }​

가변 배열

  • 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}}}와 같은 형태로 초기화가 가능합니다.

다차원 배열 조회

  • 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