Post

DataStructure - 2차원 배열(2D Array)이란?

DataStructure - 2차원 배열(2D Array)이란?

본 글은 『얄코의 가장 쉬운 자료구조와 알고리즘』을 참고하여 개인 학습 목적으로 이해한 내용을 정리한 것입니다.

2차원 배열의 구조는 아래와 같이 배열 안에 배열이 들어가있는 형태임.

1
2
3
4
5
[
	[1,2,3],
	[1,2,3],
	[1,2,3]
]

따라서, 인덱스를 통해 접근하려면 array[n][m]과 같은 형태로 접근해야함.

2차원 배열을 메모리에서 관리하는 방식은 언어별로 차이가 있음.

Swift의 경우에는 바깥쪽에 위치한 배열이 안쪽에 위치한 배열을 참조하는 구조이기 때문에 아래와 같이 배열 요소의 수가 다를 수 있음.

1
2
3
4
5
[
	[1,2],
	[1,2,3],
	[1]
]

처리 성능

  • 2차원 배열 생성: O(n * m)
  • 2차원 배열 요소 접근: 인덱스를 통해 접근 → O(1)
  • 2차원 배열 요소 수정: 인덱스를 통해 접근 → O(1)
  • 2차원 배열 특정 요소 조회: 특정 요소가 나올때까지 모든 요소를 순회해야함 → O(n * m)

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 배열 생성
var array: [[Int]] = [
    [1,2],
    [1,2,3],
    [1]
]

// 배열 요소 접근
print(array[0][1])

// 배열 요소 수정
array[1][2] = 10

// 배열 전체 순회
for arr in array{
    
    for row in arr{
        print("\(row) ", terminator: "")
    }
    
    print()
}

결과

1
2
3
4
2
1 2 
1 2 10 
1 
This post is licensed under CC BY 4.0 by the author.