java로 2차원 배열을 1차원으로 변경해서 리턴하는 함수 작성하기
public class MainClass {
public static void main(String[] args) {
int array2[][] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
//array2 정의
};
int array1[] = array2ToArray1(array2);
}
static int[] array2ToArray1(int array2[][]) { //함수의 프로토 타입 2차원 배열이 parameter
int array1[] = new int[ array2.length*array2[0].length]; //array2.length=행의 수, array2[0].length=열의 수
/*
i = 0 1 2 j =0 1 2 3
array2[0].length*i+j
00 0
01 1
02 2
03 3
10 4
11 5
12 6
13 7
20 8
21 9
22 10
23 11
*/
int count =0;
for (int i = 0; i < array2.length; i++) { // array2 의 i가 0부터 2될때까지 반복
for (int j = 0; j < array2[i].length; j++) { //array2의 i행에 있는 변수 j값만큼 반복
//array1[array2[i].length*i+j] = array2[i][j];
array1[count] = array2[i][j]; //1차원 변수 array1에 있는 변수들은 array2의(0,0)...(i,j) 값
count++;
}
}
return array1;
}
또다른 함수
public class MainClass {
public static void main(String[] args) {
static int[] array2ToArray1(int array2[][]) { //함수의 프로토 타입
int array1[] = new int[ array2.length*array2[0].length];
static int[] array2ToArray1(int array[][]) {
int length = array.length*array[0].length;
int answer[] = new int[length];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
answer[i*array[i].length + j] = array[i][j];
}
}
return answer;
}