데이터에 편하게 접근할 수 있도록 데이터를 저장하거나 조직하는 방법
각각의 환경에 적합한 자료 구조가 있으므로, 각 상황에 맞는 올바른 자료 구조를 선택하고 사용하는 것이 중요
사용 언어(JS, Python) 별로 지원하는 양상이 다르며, 사용 방법을 익히는 것 외에도 각 자료 구조의 컨셉을 이해하여 적절한 선택을 진행해야 함
코딩은 알고리즘과 자료구조, 이 두가지로 이루어진다.
- 리누스 토르발즈
단순 구조 : 프로그래밍에서 사용되는 기본 데이터 타입
(interger, float, string, boolean)
비단순구조 : 단순한 데이터를 저장하는 구조가 아닌 여러 데이터를 목적에 맞게 저장하는 자료 구조
순차적으로 데이터를 저장하는 자료 구조
자료구조에 저장하는 데이터는 일반적으로 요소(element)라고 하며, Array는 주로 서로 연결된 데이터들을 순차적으로 저장할 때 사용됨
순서가 없더라도 서로 연결된 데이터를 저장할 때 일반적으로 사용
Array 내의 element에는 순서가 있는데 이를 index라고 하며, 맨 앞의 index번호는 0.
-[index]의 형태도 가능하며, -1은 맨 마지막 요소를 의미함
실제 메모리 상에서 데이터가 순차적으로 저장되기 때문임
순차적으로 담긴 데이터에서 중간의 요소가 삭제되는 경우, 뒤의 요소들은 앞으로 한칸씩 이동되어야 함
요소를 삭제하는 과정은 코드 상에서는 겨우 한 줄이지만, 실제 메모리상 작업은 훨씬 커지게 되며, 이는 중간에 요소를 추가하는 경우에도 동일한 의미를 가짐
즉, Array는 정보가 자주 삭제되거나 추가되는 데이터를 담기에는 적절치 않음
배열은 메모리가 순차적으로 채워지기 때문에 배열이 처음 생서될 때 어느 정도 메모리를 미리 할당
(pre-allocation)
하지만 요소들이 처음 할당한 메모리 이상으로 많아지면 그 이상으로 할당해야 하며(resizing) 추가적으로 할당된 메모리 또한 순차적이어야 함
배열을 resizing하기 위해 만약 100개의 메모리 공간이 다 할당되어 100개의 공간을 추가해야 하는 경우,
1) 200개 크기의 메모리 생성
2) 기존 100개 복사
3) 101번부터 데이터가 순차적으로 추가
따라서, Array는 사이즈 예측이 잘 되지 않는 데이터를 다루기에는 적절치 않음
List와 마찬가지로 순차적으로 저장할 수 있는 자료 구조나,
데이터가 무슨 의미인지 명확하지 않아 데이터의 의미를 문맥을 보고 가정해야 함
Array를 쓰기에는 간단한 데이터를 표현
할 때 사용