본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/자료구조

[자료구조] 2차원 배열을 1차원 배열로 만드는 방법

by soobinhand 2021. 10. 19.
728x90

흠 생각해봅시다.

public class Main {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> arrayList = new ArrayList<>();
        int[][] a = {
                {1,2,3},
                {10,9,4}
        };
        int[] b = new int[a.length*a[0].length];//2 * 3
        for(int i =0; i<a.length * a[0].length;i++){
            b[i] = a[i / a[0].length][i % a[0].length];
            arraylist.add(a[i / a[0].length][i % a[0].length]);
        }
        System.out.println(Arrays.toString(b));
        System.out.println(arrayList);

    }
 }

우선 결과 코드입니다.

 

우선 몫과 나머지에 대한 이해가 좀 필요했습니다.

우리는 보통 2차원 배열에서 1차원 배열로 만드는 생각은 잘 하지 않았던 것 같아요.

 

약간 n진수 만드는 느낌으로 생각하면 될 것 같습니다.

 

위의 예에서 보면, 행 = 2, 열 = 3으로 2 X 3 행렬입니다.

총 6개의 값들이 1차원 배열에 들어가야 합니다.

그걸 따져보자면,

 

0/3 = 0

0%3 = 0

 

1/3 = 0

1%3 = 1

 

2/3 = 0

2%3 = 2

 

3/3 = 1

3%3 = 0

 

쭉쭉쭉 하다보면 (0,0) (0,1) (0,2) (1,0) ... 의 모습을 볼 수 있습니다.

그래서 출력을 해보면 

2차원 배열

       ↓

1차원 배열

이와 같다는 것을 알 수 있습니다.

감사합니다.

화이팅!

 

728x90

'Computer Science > 자료구조' 카테고리의 다른 글

[자료구조] JAVA로 구현해보는 자료구조  (0) 2021.11.15
[자료구조] Graph  (0) 2021.10.27
[자료구조] Undirected Graph - 2차원 배열  (0) 2021.10.27
[자료구조] Linked List  (0) 2021.10.26
[자료구조] Array  (0) 2021.10.25

댓글