일렬로 저장
할 수 있는 자료구조
- 장점
- 랜덤 액세스 가능 - 특정 위치에 있는 요소에 바로 접근 가능
- 대용량 데이터 처리, 정렬에 효율적
- 단점
- 크기가 정적으로 결정 - 동적 크기 조정 어려움
- 삽입/삭제 시 요소 이동 필요 - 시간 복잡도 높음 [ O(n) ]
⌗ 동적 크기 조정이 어렵다는 단점을 보완하기 위한 배열
--> 동적 배열(dynamic array)
# 파이썬 리스트 사용
arr = [1, 2, 3, 4, 5]
print(arr[2]) # 3
arr[2] = 6
print(arr) # [1, 2, 6, 4, 5]
# Numpy 라이브러리 사용
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # 3
arr[2] = 6
print(arr) # [1, 2, 6, 4, 5]
Numpy
라이브러리는 배열 연산에 최적화, 파이썬 리스트
보다 속도가 빠르고 메모리 사용량이 적음--> 동적 배열은 크기를 조절할 수 있다는 점이 가장 큰 차이점, 하지만 메모리 사용량이 증가
// 배열
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[2]); // 3
arr[2] = 6;
System.out.println(Arrays.toString(arr)); // [1, 2, 6, 4, 5]
// 동적 배열
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list.get(2)); // 3
list.set(2, 6);
System.out.println(list); // [1, 2, 6, 4, 5]
--> ArrayList
클래스로 동적 배열 생성