[LeetCode] Array and String - 2. Introduction to 2D Array

effiRin·2022년 7월 19일
0

Algorithm

목록 보기
3/4
post-thumbnail

▷ LeetCode 자료구조 이론 공부하며 번역 + 요약 정리


Introduction to 2D Array

  • 1차원 배열과 비슷하게, 2차원 배열 또한 일련의 elements로 구성된다.
  • 그러나 2차원 배열의 요소는 선(line)보다 직사각형 그리드 (rectangular grid ) 로 놓인다고 할 수 있다.

An Example

  • 2차원 배열을 사용하는 예시
// "static void main" must be defined in a public class.
public class Main {
    private static void printArray(int[][] a) {
        for (int i = 0; i < a.length; ++i) {
            System.out.println(a[i]);
        }
        for (int i = 0; i < a.length; ++i) {
            for (int j = 0; a[i] != null && j < a[i].length; ++j) {
                System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        System.out.println("Example I:");
        int[][] a = new int[2][5];
        printArray(a);
        
        System.out.println("Example II:");
        int[][] b = new int[2][];
        printArray(b);
        
        System.out.println("Example III:");
        b[0] = new int[3];
        b[1] = new int[5];
        printArray(b);
    }
}

Principle

  • 몇몇 언어에서 다차원 배열은 사실 1차원 배열처럼 내부적으로 실행된다. 반면 어떤 언에서는 실제로 다차원 배열이 없기도 한다.

1. C++은 1차원 배열처럼 2차원 배열을 저장한다.

아래 그림은 M * N인 배열 A의 실제 구조를 보여준다.
https://s3-lc-upload.s3.amazonaws.com/uploads/2018/03/31/screen-shot-2018-03-31-at-161748.png

따라서 만약 우리가 A를 M * N 요소들도 포함하는 1차원 배열로 정의한다면, 실제로 A[i][j]는 A[i * N + j]과 동일하다.


2. 자바에서 2차원 배열은 사실 M elements를 포함하는 1차원 배열이다. 그리고 elements 각각은 N integers의 배열이다.

아래 그림은 Java의 2차원 배열 A의 실제 구조를 보여준다.
https://s3-lc-upload.s3.amazonaws.com/uploads/2018/03/31/screen-shot-2018-03-31-at-162857.png

Dynamic 2D Array

  • 1차원 동적 배열과 비슷하게, 동적 2차원 배열을 정의할 수 있다.
  • 실제로, 동적 2차원 배열은 그저 중첩된 동적 배열(a nested dynamic array)이다.



<문제>

Diagonal Traverse


Spiral Matrix


Pascal's Triangle

profile
모종삽에서 포크레인까지

0개의 댓글