[Java] 2차원 배열 - 리팩토링 2

코드 속의 "진돌"·2024년 1월 6일
0
post-thumbnail

✅ 구조 개선 - 초기화, 배열의 길이


이 코드를 보니 2가지 개선할 부분이 있다.

  1. 초기화 : 기존 배열처럼 2차원 배열도 편리하게 초기화 할 수 있다.
  2. for문에서 배열의 길이 활용 : 배열의 길이가 달라지면 for문에서 row < 2, column < 3 같은 부분을 같이 변경해야 한다. 이 부분을 배열의 길이를 사용하도록 변경해보자. 배열이 커지거나 줄어들어도 for문의 코드를 변경하지 않고 그대로 유지할 수 있다.

✏️ ArrayDi3

package array;

public class ArrayDi3 {

  public static void main(String[] args) {
    // 2 x 3 2차원 배열, 초기화
    int [][] arr = {
            {1, 2, 3}, 
            {4, 5, 6}
    };

    // 2차원 배열의 길이를 활용
    for (int row = 0; row < arr.length; row++) {
      for (int column = 0; column < arr[row].length; column++) {
        System.out.print(arr[row][column] + " ");
      }
      System.out.println();  // 한 행이 끝나면 라인을 변경한다.
    }
  }
}

✓ 초기화

1차원 배열은 다음과 같이 초기화 한다.

{1 ,2, 3}

2차원 배열은 다음과 같이 초기화 한다. 이 되고, 이 된다. 그런데 이렇게 하면 행열이 잘 안느껴진다.

{{1, 2, 3}, {4, 5, 6}}

이렇게 라인을 적절하게 넘겨주면 이 명확해진다. 따라서 코드를 더 쉽게 이해할 수 있다.

{
	{1, 2, 3},
	{4, 5, 6}
}

✓ 배열의 길이

for문에서 2차원 배열의 길이를 활용했다.

  • arr.length의 길이를 뜻한다. 여기서는 2가 출력된다.
    • {{}, {}}를 생각해보면 arr배열은 {}, {} 2개의 배열 요소를 가진다.
  • arr[row].length의 길이를 뜻한다. 여기서는 3이 출력된다.
    • arr[0]{1, 2, 3} 배열을 뜻한다. 이 배열에는 3개의 요소가 있다.
    • arr[1]{4, 5, 6} 배열을 뜻한다. 이 배열에는 3개의 요소가 있다.

이제 배열의 초기화 부분만 다음과 같이 변경하면 바로 적용된 결과를 확인할 수 있다. 나머지 코드는 변경하지 않아도 된다.

{1, 2, 3}, 
{4, 5, 6}, 
{7, 8, 9}

✅ 구조 개선 - 값 입력


이번에는 배열에 직접 1, 2, 3 숫자를 적어서 값을 할당하는 것이 아니라, 배열의 크기와 상관없이 배열에 순서대로 1씩 증가하는 값을 입력하도록 변경해보자.

✏️ ArrayDi4

package array;

public class ArrayDi4 {

  public static void main(String[] args) {
    // 2 x 3 2차원 배열, 초기화
    int [][] arr = new int[2][3];

    int i = 1;
    // 순서대로 1씩 증가하는 값을 입력한다.
    for (int row = 0; row < arr.length; row++) {
      for (int column = 0; column < arr[row].length; column++) {
        arr[row][column] = i++;
      }
    }

    // 2차원 배열의 길이를 활용
    for (int row = 0; row < arr.length; row++) {
      for (int column = 0; column < arr[row].length; column++) {
        System.out.print(arr[row][column] + " ");
      }
      System.out.println();
    }
  }
}
  • 중첩된 for문을 사용해서 값을 순서대로 입력한다.
  • arr[row][column] = i++ : 후의 증감 연산자(++)를 사용해서 값을 먼저 대입한 다음에 증가한다.
    • 코드에서 int i = 1으로 i가 1부터 시작한다.

2차원 배열 선언 부분인 new int[2][3]new int[4][5]처럼 다른 숫자로 변경해도 잘 동작하는 것을 확인할 수 있다.

✓ new int[4][5]로 변경시 출력

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글