0Pricing
Java Academy · 강의

행·열 최댓값, 전치 및 서식

행과 열의 최댓값을 안전하게 찾고, 직사각형 및 가변 길이 행렬의 전치 행렬을 만듭니다. 정렬된 출력을 연습합니다.

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

행 최댓값

행 최댓값: 각 행의 요소를 한 번 순회하여 행별 최댓값을 계산합니다.

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

    int r = 1; // choose which row to check (row index 1 → {4, 9, 2, 11})

    // Max of a single row r
    int max = Integer.MIN_VALUE; // start with very small number
    for (int c = 0; c < m[r].length; c = c + 1) {
      if (m[r][c] > max) {
        max = m[r][c]; // update if current value is larger
      }
    }

    System.out.println("Max value in row " + r + " = " + max);
  }
}

열 최댓값

열 최댓값은 톱니형 배열에서 c열을 읽기 전에 각 행의 길이를 확인하여 계산합니다.

public class Main {
  public static void main(String[] args) {
    // Example jagged array (rows with different lengths)
    int[][] m = {
      {1, 7, 3},
      {4, 9},       // shorter row (only 2 columns)
      {6, 2, 11, 5} // longer row (4 columns)
    };

    int c = 2; // column index to check (3rd column)

    // Max of column c across all rows
    int colMax = Integer.MIN_VALUE;
    for (int r = 0; r < m.length; r = r + 1) {
      // Guard: only access if this row has column c
      if (c < m[r].length) {
        if (m[r][c] > colMax) {
          colMax = m[r][c]; // update maximum
        }
      }
    }

    System.out.println("Max value in column " + c + " = " + colMax);
  }
}

직사각형 배열 전치

전치(직사각형): 모든 행의 길이가 같을 때 행과 열을 서로 바꿉니다.

public class Main {
  public static void main(String[] args) {
    // Example 2D rectangular matrix (3 rows × 2 columns)
    int[][] m = {
      {1, 2},
      {3, 4},
      {5, 6}
    };

    // Dimensions
    int rows = m.length;       // number of rows in m
    int cols = m[0].length;    // number of columns in m

    // Transposed matrix (C × R)
    int[][] t = new int[cols][rows];

    // Fill transposed matrix
    for (int r = 0; r < rows; r = r + 1) {
      for (int c = 0; c < cols; c = c + 1) {
        t[c][r] = m[r][c];  // swap row/column
      }
    }

    // Print original matrix
    System.out.println("Original matrix:");
    for (int r = 0; r < rows; r++) {
      for (int c = 0; c < cols; c++) {
        System.out.print(m[r][c] + " ");
      }
      System.out.println();
    }

    // Print transposed matrix
    System.out.println("Transposed matrix:");
    for (int r = 0; r < t.length; r++) {
      for (int c = 0; c < t[r].length; c++) {
        System.out.print(t[r][c] + " ");
      }
      System.out.println();
    }
  }
}

톱니형 배열 전치

전치(톱니형): 열을 행으로 만들고, 가장 긴 행의 길이를 기준으로 각 크기를 정하며, 요소를 읽을 때 범위를 확인합니다.

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

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

    // 2) Create transpose: it will have maxCols rows
    int[][] t = new int[maxCols][];

    // 3) Fill the transposed matrix
    for (int c = 0; c < maxCols; c = c + 1) {
      // Each transposed row has as many elements as original rows
      t[c] = new int[m.length];
      for (int r = 0; r < m.length; r = r + 1) {
        // If row is too short, pad with 0
        t[c][r] = (c < m[r].length) ? m[r][c] : 0;
      }
    }

    // Print original jagged array
    System.out.println("Original jagged array:");
    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();
    }

    // Print transposed array
    System.out.println("Jagged-safe transpose:");
    for (int r = 0; r < t.length; r++) {
      for (int c = 0; c < t[r].length; c++) {
        System.out.print(t[r][c] + " ");
      }
      System.out.println();
    }
  }
}

서식 지정 도우미

도우미를 사용하여 열 너비를 계산하고 비교를 위해 행렬을 정렬하여 출력합니다.

public class Main {

  // Compute per-column widths for a (possibly jagged) 2D int array.
  // For each column index c, we find the longest string length among m[r][c] (for rows that have that column).
  static int[] widths(int[][] m) {
    // 1) Find the maximum number of columns across all rows
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r].length > maxCols) maxCols = m[r].length;
    }

    // 2) Prepare width array (initialized to 0)
    int[] w = new int[maxCols];

    // 3) For each existing cell, compute the string length and keep the max per column
    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;
      }
    }

    // 4) Ensure each column has at least width 1
    for (int c = 0; c < w.length; c = c + 1) {
      if (w[c] < 1) w[c] = 1;
    }
    return w;
  }

  // Print a (possibly jagged) matrix so that each column is right-aligned using the widths[] computed above.
  static void printAligned(int[][] m) {
    int[] w = widths(m); // column widths

    for (int r = 0; r < m.length; r = r + 1) {
      String line = "";

      for (int c = 0; c < m[r].length; c = c + 1) {
        // Convert number to string
        String s = Integer.toString(m[r][c]);

        // Left-pad with spaces until it matches the target column width
        while (s.length() < w[c]) s = " " + s;

        // Append to the line; add a single space between columns (but not after the last one)
        line = line + s + (c + 1 < m[r].length ? " " : "");
      }

      // Print the fully assembled row
      System.out.println(line);
    }
  }

  public static void main(String[] args) {
    // Demo with a jagged matrix (different row lengths)
    int[][] m = {
      {1, 200, 3},
      {45, 6},
      {7, 89, 1000, 11}
    };

    System.out.println("Aligned output:");
    printAligned(m);
  }
}

전치 예시

실행해 보세요: 직사각형 행렬과 그 전치의 정렬된 출력을 비교한 다음, 톱니형 행렬과 그 열 최댓값 및 여백을 채운 전치를 확인해 보세요.

public class Main {
  // Compute column maxima (jagged-safe)
  static int[] colMaxima(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[] max = new int[maxCols];
    for (int c = 0; c < maxCols; c = c + 1) {
      int best = Integer.MIN_VALUE;
      boolean seen = false;
      for (int r = 0; r < m.length; r = r + 1) {
        if (c < m[r].length) {
          if (!seen || m[r][c] > best) { best = m[r][c]; seen = true; }
        }
      }
      max[c] = seen ? best : 0;
    }
    return max;
  }

  // Transpose rectangular
  static int[][] transposeRect(int[][] m) {
    int rows = m.length;
    int cols = m[0].length;
    int[][] t = new int[cols][rows];
    for (int r = 0; r < rows; r = r + 1) {
      for (int c = 0; c < cols; c = c + 1) t[c][r] = m[r][c];
    }
    return t;
  }

  // Jagged-safe transpose (pads missing with 0)
  static int[][] transposeJagged(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[][] t = new int[maxCols][];
    for (int c = 0; c < maxCols; c = c + 1) {
      t[c] = new int[m.length];
      for (int r = 0; r < m.length; r = r + 1) t[c][r] = (c < m[r].length) ? m[r][c] : 0;
    }
    return t;
  }

  // Helpers
  static int[] widths(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;
      }
    }
    for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
    return w;
  }

  static void printAligned(int[][] m) {
    int[] w = widths(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) {
    // Rectangular example for transpose
    int[][] rect = {
      {1, 2, 3},
      {4, 5, 6}
    };

    // Jagged example for maxima and jagged transpose
    int[][] jag = {
      {9, 12, 7},
      {5},
      {8, 10}
    };

    System.out.println("rect:");
    printAligned(rect);
    System.out.println("transpose(rect):");
    printAligned(transposeRect(rect));

    System.out.println("jag (jagged):");
    printAligned(jag);
    int[] cm = colMaxima(jag);
    System.out.print("col maxima: ");
    for (int i = 0; i < cm.length; i = i + 1) System.out.print(cm[i] + (i + 1 < cm.length ? " " : ""));
    System.out.println();

    System.out.println("transpose(jag, padded):");
    printAligned(transposeJagged(jag));
  }
}

열 최댓값 확인

확인해 보세요: 톱니형 행렬에서 c열의 최댓값은 어떻게 계산합니까?

복습 및 다음 단계

복습: 행 및 열의 최댓값을 계산하고, 직사각형 행렬을 전치하고, 여백을 추가하여 톱니형 배열에 안전한 전치를 만들었습니다. 정렬된 출력의 서식도 지정했습니다.

자주 묻는 질문

“행·열 최댓값, 전치 및 서식” 강의는 무료인가요?

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

“행·열 최댓값, 전치 및 서식”에서 뭘 배우나요?

행과 열의 최댓값을 안전하게 찾고, 직사각형 및 가변 길이 행렬의 전치 행렬을 만듭니다. 정렬된 출력을 연습합니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“행·열 최댓값, 전치 및 서식” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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