타닥타닥 개발자의 일상

java로 2차원 배열을 1차원으로 변경해서 리턴하는 함수 작성하기 본문

코딩 기록/Java

java로 2차원 배열을 1차원으로 변경해서 리턴하는 함수 작성하기

NomadHaven 2021. 12. 12. 19:41

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;
}

Comments