logo

Java의 다차원 배열

Java의 배열 기본 다차원 배열 간단한 단어로 배열의 배열로 정의할 수 있습니다. 다차원 배열의 데이터는 테이블 형식(행 주요 순서)으로 저장됩니다.

통사론:



데이터 형식 [1차원][2차원][]..[N차원] 배열_이름 = 새로운 data_type [사이즈1][사이즈2]….[사이즈N];

어디:

  • 데이터 형식 : 배열에 저장될 데이터 유형입니다. 예: int, char 등
  • 치수 : 생성된 배열의 차원입니다. 예: 1D, 2D 등
  • 배열_이름 : 배열 이름
  • 사이즈1, 사이즈2, …, 사이즈N : 각각의 치수의 크기입니다.

예:



Two dimensional array: int[][] twoD_arr = new int[10][20];  Three dimensional array: int[][][] threeD_arr = new int[10][20][30];>

다차원 배열의 크기 : 다차원 배열에 저장할 수 있는 요소의 총 개수는 모든 차원의 크기를 곱하여 계산할 수 있습니다.

예를 들어: 배열 int[][] x = 새로운 int[10][20] 총 (10*20) = 200개의 요소를 저장할 수 있습니다. 마찬가지로, 배열 int[][][] x = 새로운 int[5][10][20] 총 (5*10*20) = 1000개의 요소를 저장할 수 있습니다.

다차원 배열의 응용

● 다차원 배열은 데이터를 표 형식으로 저장하는 데 사용됩니다. 예를 들어, 학생의 출석 번호와 성적을 저장하는 것은 다차원 배열을 사용하여 쉽게 수행할 수 있습니다. 또 다른 일반적인 사용법은 이미지를 3D 배열에 저장하는 것입니다.



● 동적 프로그래밍 질문에서는 문제의 상태를 표현하는 데 사용되는 다차원 배열이 사용됩니다.

● 이 외에도 행렬 곱셈, 그래프의 인접 행렬 표현, 그리드 검색 문제와 같은 많은 표준 알고리즘 문제에 적용됩니다.

2차원 배열(2D-Array)

2차원 배열은 다차원 배열의 가장 간단한 형태입니다. 2차원 배열은 이해하기 쉽도록 1차원 배열의 배열로 볼 수 있습니다.

간접적인 선언 방법:

  • 선언 – 구문:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20];>
  • 초기화 – 구문:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1;>

예: 1

리눅스 작업 관리자

자바




import> java.io.*;> public> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr =>new> int>[>10>][>20>];> >arr[>0>][>0>] =>1>;> >System.out.println(>'arr[0][0] = '> + arr[>0>][>0>]);> >}> }>

>

>

산출

arr[0][0] = 1>

예: 4*4 행렬을 사용하여 기본값으로 2D 배열 구현

자바




public> class> TwoDArray {> >public> static> void> main(String[] args) {> >int> rows =>4>;> >int> columns =>4>;> >int>[][] array =>new> int>[rows][columns];> >int> value =>1>;> >for> (>int> i =>0>; i for (int j = 0; j array[i][j] = value; value++; } } System.out.println('The 2D array is: '); for (int i = 0; i for (int j = 0; j System.out.print(array[i][j] + ' '); } System.out.println(); } } }>

>

>

산출

The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16>

설명:

  • 행과 열의 수는 행과 열 변수를 사용하여 지정됩니다. 2D 배열은 배열에 메모리를 할당하는 new 연산자를 사용하여 생성됩니다. 배열의 크기는 행과 열로 지정됩니다.

직접 신고 방법: 통사론:

  data_type[][] array_name = {     {valueR1C1, valueR1C2, ....},      {valueR2C1, valueR2C2, ....}     };   For example: int[][] arr = {{1, 2}, {3, 4}};>

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >for> (>int> i =>0>; i <>2>; i++)> >for> (>int> j =>0>; j <>2>; j++)> >System.out.println(>'arr['> + i +>']['> + j +>'] = '> >+ arr[i][j]);> >}> }>

>

>

산출

arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4>

2차원 배열의 요소에 액세스

2차원 배열의 요소는 일반적으로 다음으로 참조됩니다. x[i][j] 여기서 'i'는 행 번호이고 'j'는 열 번호입니다.

통사론:

x[row_index][column_index]>

예를 들어:

int[][] arr = new int[10][20]; arr[0][0] = 1;>

위의 예는 첫 번째 행과 첫 번째 열에 있는 요소를 나타냅니다. 메모 : 배열 크기가 N인 경우 배열에서 해당 인덱스는 0에서 N-1까지입니다. 따라서 row_index 2의 경우 실제 행 번호는 2+1 = 3입니다. 예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >System.out.println(>'arr[0][0] = '> + arr[>0>][>0>]);> >}> }>

>

>

산출

arr[0][0] = 1>

표 형식의 2D 배열 표현:

2차원 배열은 행 번호의 범위가 0에서 (x-1)이고 열 번호의 범위가 0에서 (y-1)인 'x' 행과 'y' 열이 있는 테이블로 볼 수 있습니다. 3개의 행과 3개의 열이 있는 2차원 배열 'x'가 아래에 표시됩니다.

자바의 회문

2차원

2D 배열을 표 형식으로 인쇄합니다.

2차원 배열의 모든 요소를 ​​출력하려면 중첩된 for 루프를 사용하세요. 이를 위해서는 두 개의 for 루프가 필요합니다. 하나는 행을 순회하고 다른 하나는 열을 순회합니다.

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >for> (>int> i =>0>; i <>2>; i++) {> >for> (>int> j =>0>; j <>2>; j++) {> >System.out.print(arr[i][j] +>' '>);> >}> >System.out.println();> >}> >}> }>

>

>

산출

1 2 3 4>

예: 사용자 입력을 통한 2D 배열 구현

자바




import> java.util.Scanner;> public> class> Main {> >public> static> void> main(String[] args)> >{> >Scanner scan =>new> Scanner(System.in);> >System.out.print(>'Enter number of rows: '>);> >int> rows = scan.nextInt();> >System.out.print(>'Enter number of columns: '>);> >int> columns = scan.nextInt();> >int>[][] multidimensionalArray=>new> int>[rows][columns];> >// Now you can use the array like a regular> >// 2-dimensional array> >for> (>int> i =>0>; i for (int j = 0; j multidimensionalArray[i][j]= (i + 1) * (j + 1); } } for (int i = 0; i for (int j = 0; j System.out.print(multidimensionalArray[i][j]+ ' '); } System.out.println(); } scan.close(); } }>

>

엑셀의 날짜 차이
>

산출

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9>
  • 이 코드는 사용자에게 2차원 배열의 행과 열 수를 입력하라는 메시지를 표시합니다. Scanner 클래스는 사용자 입력을 읽는 데 사용됩니다. 그런 다음 지정된 수의 행과 열을 사용하여 정수의 2차원 배열을 만들고 배열의 각 요소에 i*j를 할당합니다.
  • 2차원 이상의 다차원 배열을 생성하려는 경우 배열의 배열 생성과 동일한 접근 방식을 사용할 수 있습니다. 예를 들어 3차원 배열을 만들려면 2차원 배열의 배열을 만들 수 있습니다.

3차원 배열(3D-Array)

3차원 배열은 다차원 배열의 복잡한 형태입니다. 3차원 배열은 이해하기 쉽도록 2차원 배열의 배열로 볼 수 있습니다.

간접적인 선언 방법:

  • 선언 – 구문:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30];>
  • 초기화 – 구문:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1;>

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr =>new> int>[>10>][>20>][>30>];> >arr[>0>][>0>][>0>] =>1>;> >System.out.println(>'arr[0][0][0] = '> + arr[>0>][>0>][>0>]);> >}> }>

>

>

산출

arr[0][0][0] = 1>

직접 신고 방법: 통사론:

  data_type[][][] array_name = {     {     {valueA1R1C1, valueA1R1C2, ....},      {valueA1R2C1, valueA1R2C2, ....}     },     {     {valueA2R1C1, valueA2R1C2, ....},      {valueA2R2C1, valueA2R2C2, ....}     }     };   For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };>

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } }, { {>5>,>6> }, {>7>,>8> } } };> >for> (>int> i =>0>; i <>2>; i++)> >for> (>int> j =>0>; j <>2>; j++)> >for> (>int> z =>0>; z <>2>; z++)> >System.out.println(>'arr['> + i> >+>']['> >+ j +>']['> >+ z +>'] = '> >+ arr[i][j][z]);> >}> }>

>

>

산출

arr[0][0][0] = 1 arr[0][0][1] = 2 arr[0][1][0] = 3 arr[0][1][1] = 4 arr[1][0][0] = 5 arr[1][0][1] = 6 arr[1][1][0] = 7 arr[1][1][1] = 8>

3차원 배열의 요소에 접근하기

3차원 배열의 요소는 일반적으로 다음으로 참조됩니다. x[i][j][k] 여기서 'i'는 배열 번호, 'j'는 행 번호, 'k'는 열 번호입니다.

통사론:

x[array_index][row_index][column_index]>

예를 들어:

파이썬이 포함되어 있습니다
int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1;>

위의 예는 선언된 3D 배열에서 첫 번째 배열의 첫 번째 행과 첫 번째 열에 있는 요소를 나타냅니다.

메모 : 배열 크기가 N인 경우 배열에서 해당 인덱스는 0에서 N-1까지입니다. 따라서 row_index 2의 경우 실제 행 번호는 2+1 = 3입니다.

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } }, { {>5>,>6> }, {>7>,>8> } } };> >System.out.println(>'arr[0][0][0] = '> + arr[>0>][>0>][>0>]);> >}> }>

>

>

산출

arr[0][0][0] = 1>

표 형식의 3D 배열 표현:

3차원 배열은 행 번호가 0부터 (x-1)까지이고 열 번호가 0부터 (y-1)까지인 'x' 행과 'y' 열이 있는 배열 테이블로 볼 수 있습니다. 3개의 행과 3개의 열을 포함하는 3개의 배열이 있는 3차원 배열은 다음과 같습니다.

표 형식으로 3D 배열을 인쇄합니다.

3차원 배열의 모든 요소를 ​​출력하려면 중첩된 for 루프를 사용하세요. 이를 위해서는 세 개의 for 루프가 필요합니다. 하나는 배열을 순회하고, 두 번째는 행을 순회하고, 다른 하나는 열을 순회합니다.

예:

자바




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } },> >{ {>5>,>6> }, {>7>,>8> } } };> >for> (>int> i =>0>; i <>2>; i++) {> >for> (>int> j =>0>; j <>2>; j++) {> >for> (>int> k =>0>; k <>2>; k++) {> >System.out.print(arr[i][j][k] +>' '>);> >}> >System.out.println();> >}> >System.out.println();> >}> >}> }>

>

>

산출

1 2 3 4 5 6 7 8>

런타임 중 다차원 배열 삽입:

이 주제는 런타임 중에 사용자 정의 입력을 다차원 배열로 가져오도록 강제됩니다. 런타임 중에 사용자가 먼저 프로그램에 모든 입력을 제공하고 모든 입력이 입력된 후 프로그램은 그에 따라 각 입력에 대해 출력을 제공하는 데 중점을 둡니다. 사용자가 여러 다른 값을 가진 여러 테스트 사례에 대한 입력을 먼저 만들고 모든 작업이 완료된 후 프로그램이 출력 제공을 시작할 때 유용합니다. 예를 들어, 입력 배열에서 짝수와 홀수의 총 개수를 찾아보겠습니다. 여기서는 2차원 배열의 개념을 사용하겠습니다.

다음은 다가오는 코드에서 다양한 요소의 사용을 설명하는 몇 가지 사항입니다.

  • 행 정수는 테스트 케이스의 수로 간주되고 열 값은 각 테스트 케이스의 값으로 간주됩니다.
  • 하나의 for() 루프는 테스트 케이스 번호를 업데이트하는 데 사용되고 다른 for() 루프는 각 배열 값을 가져오는 데 사용됩니다.
  • 모든 입력 입력이 완료되면 다시 두 개의 for() 루프를 동일한 방식으로 사용하여 지정된 조건에 따라 프로그램을 실행합니다.
  • 입력의 첫 번째 줄은 총 TestCases 수입니다.
  • 두 번째 줄에는 첫 번째 배열 값의 총 개수가 표시됩니다.
  • 세 번째 줄은 배열 값 등을 제공합니다.

구현:

자바




import> java.io.*;> import> java.util.Scanner;> class> GFGTestCase {> >public> static> void> main(String[] args)> >{> >// Scanner class to take> >// values from console> >Scanner scanner =>new> Scanner(System.in);> >// totalTestCases = total> >// number of TestCases> >// eachTestCaseValues => >// values in each TestCase as> >// an Array values> >int> totalTestCases, eachTestCaseValues;> >// takes total number of> >// TestCases as integer number> >totalTestCases = scanner.nextInt();> >// An array is formed as row> >// values for total testCases> >int>[][] arrayMain =>new> int>[totalTestCases][];> >// for loop to take input of> >// values in each TestCase> >for> (>int> i =>0>; i eachTestCaseValues = scanner.nextInt(); arrayMain[i] = new int[eachTestCaseValues]; for (int j = 0; j arrayMain[i][j] = scanner.nextInt(); } } // All input entry is done. // Start executing output // according to condition provided for (int i = 0; i // Initialize total number of // even & odd numbers to zero int nEvenNumbers = 0, nOddNumbers = 0; // prints TestCase number with // total number of its arguments System.out.println('TestCase ' + i + ' with ' + arrayMain[i].length + ' values:'); for (int j = 0; j System.out.print(arrayMain[i][j] + ' '); // even & odd counter updated as // eligible number is found if (arrayMain[i][j] % 2 == 0) { nEvenNumbers++; } else { nOddNumbers++; } } System.out.println(); // Prints total numbers of // even & odd System.out.println( 'Total Even numbers: ' + nEvenNumbers + ', Total Odd numbers: ' + nOddNumbers); } } } // This code is contributed by Udayan Kamble.>

>

문자열.java의 값
>

산출:

  Input:  2 2 1 2 3 1 2 3    Output:  TestCase 0 with 2 values: 1 2  Total Even numbers: 1, Total Odd numbers: 1 TestCase 1 with 3 values: 1 2 3  Total Even numbers: 1, Total Odd numbers: 2    Input:  3 8 1 2 3 4 5 11 55 66 5 100 101 55 35 108 6 3 80 11 2 1 5    Output:  TestCase 0 with 8 values: 1 2 3 4 5 11 55 66  Total Even numbers: 3, Total Odd numbers: 5 TestCase 1 with 5 values: 100 101 55 35 108  Total Even numbers: 2, Total Odd numbers: 3 TestCase 2 with 6 values: 3 80 11 2 1 5  Total Even numbers: 2, Total Odd numbers: 4>