면접 주제로 자주 나오는 Data Structure에 관해 매주 월요일, 5주에 걸쳐 자료 정리를 진행한다.
데이터에 편리하게 접근, 조작하기 위해 데이터를 저장하거나 조직하는 방법
상황과 문맥에 맞게 데이터를 담을 수 있는 적절한 구조
종류가 많기때문에 각각의 자료구조의 장단점을 파악해서 상황에 따라 선택사용
언어별로 지원하는 양상이 다름
단순구조 : 기본 데이터 타입
비단순구조 : 여러 데이터를 목적에 맞게 효과적으로 저장하는 자료 구조선형구조 : 저장되는 자료의 전후 관계가 1:1
비선형구조 : 데이터 항목 사이의 관계가 1:N
Array - Javascript / List - Python
가장 기초적이고 자주 사용되는 자료 구조
1) 순차적으로 데이터를 저장한다.
2) 저장되는 데이터는 element라고 한다.
3) 데이터를 순차적으로 저장할 때 사용
4) 순서 상관없이 서로 연결된 데이터 저장시에도 사용
5) 가장 자주 사용됨
6) 삽입 순서대로 저장됨
7) 수정이 가능함
8) 동일한 값도 여러번 삽입 가능
9) multi-dimentional array(다중차원 배열) = array요소가 array가 될 수 있음
1) index 0부터 시작 / 마이너스 부호를 가질 경우(-1) 맨 마지막 요소
1) Removing or Adding Elements
정보가 삭제되거나 추가될 경우 그 뒤의 요소들을 모두 앞으로 또는 뒤로 옮겨야 하므로 속도가 느림 => 정보가 자주 삭제 또는 추가되는 데이터를 담기에는 적절하지 않음.
2) Array Resizing
순차적으로 배열을 저장한다는 기능때문에 배열이 모두 담기기 전에 미리 어느정도의 메모리를 할당하게 됨. 기존의 메모리가 다 차서 또 다른 메모리를 추가해야 되는 경우, 그 두 배정도의 메모리를 생성한 후 기존의 메모리를 복사하고 그 바로 다음번째 데이터부터 순차적으로 추가됨. (일반적으로 대부분의 언어는 pre-allocation과 resizing을 자동으로 실행함)
Tuple이 Array(List)보다 더 가볍기에 좌표 데이터와 같이 간단한 데이터를 표현할 때 사용.