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

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

✅ 구조 개선 - 행 출력 반복


✏️ 구조 변경

코드 구조를 보면 비슷한 부분이 출력된다.

// 0행 출력
System.out.print(arr[0][0] + " ");  // 0열 출력
System.out.print(arr[0][1] + " ");  // 1열 출력
System.out.print(arr[0][2] + " ");  // 2열 출력
System.out.println();  // 한 행이 끝나면 라인을 변경한다.

// 1행 출력
System.out.print(arr[1][0] + " ");  // 0열 출력
System.out.print(arr[1][1] + " ");  // 1열 출력
System.out.print(arr[1][2] + " ");  // 2열 출력
System.out.println();  // 한 행이 끝나면 라인을 변경한다.

코드를 보면 을 출력하는 부분이 거의 같다. 차이가 있는 부분은 에서 arr[0]으로 시작할 지, arr[1]로 시작할 지의 차이다.

다음과 같이 (row)에 들어가는 숫자만 하나씩 증가하면서 반복하면 될 것 같다.

System.out.print(arr[row][0] + " ");  // 0열 출력
System.out.print(arr[row][1] + " ");  // 1열 출력
System.out.print(arr[row][2] + " ");  // 2열 출력
System.out.println();  // 한 행이 끝나면 라인을 변경한다.

✏️ ArrayDi1

package array;

public class ArrayDi1 {

  public static void main(String[] args) {
    // 2 x 3 2차원 배열을 만든다.
    int [][] arr = new int[2][3];  // 행 = 2, 열 = 3

    arr[0][0] = 1;  // 0행 0열
    arr[0][1] = 2;  // 0행 1열
    arr[0][2] = 3;  // 0행 2열
    arr[1][0] = 4;  // 1행 0열
    arr[1][1] = 5;  // 1행 1열
    arr[1][2] = 6;  // 1행 2열

    for (int row = 0; row < 2; row++) {
      System.out.print(arr[row][0] + " ");  // 0열 출력
      System.out.print(arr[row][1] + " ");  // 0열 출력
      System.out.print(arr[row][2] + " ");  // 0열 출력
      System.out.println();  // 한 행이 끝나면 라인을 변경한다.
    }
  }
}
  • for문을 통해서 (row)을 반복해서 접근한다. 각 안에서 (column)이 3개이므로 arr[row][0], arr[row][1], arr[row][2] 3번 출력된다. 이렇게 하면 for문을 한 번 도는 동안 3개의 을 출력할 수 있다.
    • row = 0for문이 실행되면 arr[0][0], arr[0][1], arr[0][2]로 1 2 3이 출력된다.
    • row = 1for문이 실행되면 arr[1][0], arr[1][1], arr[1][2]로 4 5 6이 출력된다.

✏️ 실행 결과

✅ 구조 개선 - 열 출력 반복


다음 부분을 보면 같은 코드가 반복된다.

System.out.print(arr[row][0] + " ");  // 0열 출력
System.out.print(arr[row][1] + " ");  // 1열 출력
System.out.print(arr[row][2] + " ");  // 2열 출력

다음과 같이 (column)에 들어가는 숫자만 하나씩 증가하면서 반복하면 될 것 같다.

// column을 0, 1, 2로 변경하면서 다음 코드를 반복
System.out.print(arr[row][column] + " ");  // column열 출력

✏️ ArrayDi2

package array;

public class ArrayDi2 {

  public static void main(String[] args) {
    // 2 x 3 2차원 배열을 만든다.
    int [][] arr = new int[2][3];  // 행 = 2, 열 = 3

    arr[0][0] = 1;  // 0행 0열
    arr[0][1] = 2;  // 0행 1열
    arr[0][2] = 3;  // 0행 2열
    arr[1][0] = 4;  // 1행 0열
    arr[1][1] = 5;  // 1행 1열
    arr[1][2] = 6;  // 1행 2열

    for (int row = 0; row < 2; row++) {
      for (int column = 0; column < 3; column++) {
        System.out.print(arr[row][column] + " ");
      }
      System.out.println();  // 한 행이 끝나면 라인을 변경한다.
    }
  }
}
  • for문을 2번 중첩해서 사용하는데, 첫번째 for문은 을 탐색하고, 내부에 있는 두번째 for문은 을 탐색한다.
  • 내부에 있는 for문은 앞서 작성한 다음 코드와 같다. for문을 사용해서 을 효과적으로 출력했다.
    System.out.print(arr[row][0] + " ");  // 0열 출력
    System.out.print(arr[row][1] + " ");  // 1열 출력
    System.out.print(arr[row][2] + " ");  // 2열 출력
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글