# 배열 리스트(array-list)
## 목차
1. 배열리스트란?
2. 장점
3. 단점
4. 언제 사용하면 좋을까?
5. 구현
## 1. 배열 리스트란?
배열 리스트는 배열을 사용한 리스트이다.
![Imgur](https://i.imgur.com/tg4tRAG.png)
여기서 리스트는 순서를 갖는 자료구조로서, 데이터간 공백이 없다.
![Imgur](https://i.imgur.com/7VHadXk.png)
## 2. 장점
배열리스트는 읽기 속도가 O(1)로 빠르다. 왜? 고정된 연속적 메모리 공간을 차지하기 때문.
## 3. 단점
1. 데이터 삽입(또는 삭제) 시, 속도가 O(n)으로 느리다. 왜? 기존 항목을 시프트 해야하기 때문.
![Imgur](https://i.imgur.com/P1hmydd.png)
![Imgur](https://i.imgur.com/xXYg4N1.png)
2. 배열의 크기가 큰 경우, 메모리 할당이 곤란할 수 있다.
3. 크기가 고정되어 있다. 배열이 꽉 차면 크기를 새롭게 늘리고 복사해줘야 한다.
## 4. 언제 적용하면 좋을까?
단순 읽기(read) 및 쓰기(write) 작업이 많은 데이터에 좋다.
삽입(insert) 및 삭제(remove) 연산이 많은 경우, 연결리스트(`linked-list`)를 추천한다.
## 5. 구현
배열 리스트의 구현은 아래 실습 문제를 통해 연습해보자.