0Pricing
Java Academy · 강의

가변 길이 배열 및 표 서식

가변 길이 2차원 배열을 처리하고 열별 너비를 사용해 정렬된 표를 출력합니다. 예제에서는 Scanner 없이 샘플 행렬을 만듭니다.

가변 길이 배열 및 표 서식은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 6개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 6개의 강의가 포함되어 있습니다.

톱니형 배열 개념

톱니형 2차원 배열: 각 행의 길이가 다를 수 있습니다. 행을 개별적으로 처리하고 공통 열 개수를 가정하지 마세요.

톱니형 배열 생성

길이가 서로 다른 행을 할당하여 톱니형 배열을 생성합니다. 메시지에서는 이유를 설명합니다. 각 행에 필요한 만큼의 열만 있으면 됩니다.

public class Main {
  public static void main(String[] args) {
    // Create a jagged array with 3 rows of varying lengths
    int[][] m = new int[3][];

    // Row 0 has 2 columns
    m[0] = new int[]{1, 2};

    // Row 1 has 3 columns
    m[1] = new int[]{3, 4, 5};

    // Row 2 has 1 column
    m[2] = new int[]{6};

    // Print the jagged array
    System.out.println("Jagged array contents:");
    for (int r = 0; r < m.length; r++) {
      for (int c = 0; c < m[r].length; c++) {
        System.out.print(m[r][c] + " ");
      }
      System.out.println(); // new line after each row
    }
  }
}

안전한 순회

각 행에 m[r].length를 사용하여 안전하게 순회합니다. 안쪽 반복문의 길이는 행마다 다를 수 있습니다.

public class Main {
  public static void main(String[] args) {
    // Example jagged array
    int[][] m = {
      {1, 2},
      {3, 4, 5},
      {6}
    };

    // Safe nested loops for a jagged matrix
    for (int r = 0; r < m.length; r = r + 1) {
      // Always use the actual length of the current row
      for (int c = 0; c < m[r].length; c = c + 1) {
        int value = m[r][c];  // process the value
        System.out.print(value + " ");
      }
      System.out.println(); // new line after each row
    }
  }
}

열 너비

열을 정렬하여 출력하려면 모든 행을 검사하여 존재하는 각 열의 너비를 계산합니다.

// Determine the maximum number of columns among all rows
		int maxCols = 0;
		for (int r = 0; r < m.length; r = r + 1) {
		  if (m[r].length > maxCols) maxCols = m[r].length;
		}

		// For each column, store the maximum string length of values in that column
		int[] w = new int[maxCols];
		for (int r = 0; r < m.length; r = r + 1) {
		  for (int c = 0; c < m[r].length; c = c + 1) {
			int len = Integer.toString(m[r][c]).length();
			if (len > w[c]) w[c] = len;
		  }
		}

정렬하여 출력

각 값의 왼쪽에 공백을 추가하여 열 너비에 맞춘 다음, 행을 하나의 문자열로 출력합니다.

// Print each row with left-padded columns
		for (int r = 0; r < m.length; r = r + 1) {
		  String line = "";
		  for (int c = 0; c < m[r].length; c = c + 1) {
			String s = Integer.toString(m[r][c]);
			while (s.length() < w[c]) s = " " + s;  // left pad with spaces
			line = line + s + (c + 1 < m[r].length ? " " : "");
		  }
		  System.out.println(line);
		}

입력 없는 예시

실행해 보세요: 이 예시에서는 코드로 톱니형 행렬을 만들고, 열 너비를 계산하고, 정렬된 표를 출력합니다. 입력은 필요하지 않습니다.

public class Main {
  // Compute per-column widths for a jagged matrix
  static int[] colWidths(int[][] m) {
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r].length > maxCols) maxCols = m[r].length;
    }
    int[] w = new int[maxCols];
    for (int r = 0; r < m.length; r = r + 1) {
      for (int c = 0; c < m[r].length; c = c + 1) {
        int len = Integer.toString(m[r][c]).length();
        if (len > w[c]) w[c] = len;
      }
    }
    // Ensure at least width 1 for each column
    for (int c = 0; c < w.length; c = c + 1) {
      if (w[c] < 1) w[c] = 1;
    }
    return w;
  }

  // Print the matrix with aligned columns
  static void printTable(int[][] m) {
    int[] w = colWidths(m);
    for (int r = 0; r < m.length; r = r + 1) {
      String line = "";
      for (int c = 0; c < m[r].length; c = c + 1) {
        String s = Integer.toString(m[r][c]);
        while (s.length() < w[c]) s = " " + s;
        line = line + s + (c + 1 < m[r].length ? " " : "");
      }
      System.out.println(line);
    }
  }

  public static void main(String[] args) {
    // Sample jagged matrix (no Scanner; values are hard-coded)
    int[][] m = {
      {1, 23, 456},
      {7, 8},
      {90, 12, 3, 4}
    };

    System.out.println("Aligned table:");
    printTable(m);
  }
}

톱니형 배열 순회 확인

확인해 보세요: 톱니형 행렬의 모든 요소를 안전하게 순회하는 중첩 반복문은 무엇입니까?

복습 및 다음 단계

복습: 톱니형 배열을 생성하고, 행별 길이를 사용하여 안전하게 순회하고, 열 너비를 계산하고, Scanner 없이 정렬된 표를 출력했습니다.

다음: 행 및 열의 최댓값과 행렬의 전치를 살펴봅니다.

자주 묻는 질문

“가변 길이 배열 및 표 서식” 강의는 무료인가요?

네 — “가변 길이 배열 및 표 서식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 6개의 강의가 포함되어 있습니다.

“가변 길이 배열 및 표 서식”에서 뭘 배우나요?

가변 길이 2차원 배열을 처리하고 열별 너비를 사용해 정렬된 표를 출력합니다. 예제에서는 Scanner 없이 샘플 행렬을 만듭니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 6개 중 2번째 강의입니다.

“가변 길이 배열 및 표 서식” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 2차원 배열 기초 및 중첩 순회
  2. 가변 길이 배열 및 표 서식
  3. 행·열 최댓값, 전치 및 서식
  4. 2차원 미니 프로젝트: 성적표
  5. 도우미 클래스 기반 2차원 유틸리티(리팩터링)
  6. 2차원 데이터 정제 및 검증
← Java Academy(으)로 돌아가기