자료구조 : 메모리상에서 DB에 저장하기 위해서 자료구조를 사용합니다.
위의 이미지는 구현의 관점에서 본 파이썬의 자료형입니다.
구현과 형태에 따라 자료 구조를 분류합니다.
구현
-
배열 : 순서가 잘 변하지 않으며 (시퀸스) 반복이 가능 해야 한다(이터레이터)
-
링크드 리스트: 하나의 노드에 하나의 헤더를 가진 단위로 서로의 순서를 사용하는 것
-
해시 테이블 : 해시 값에 따라 인덱싱 된다.
형태
-
선형
-
스텍 : LIFO의 형태
-
- 큐 : FIFO의 형태
-
- 덱 : FIFO의 형태가 앞뒤로 다되는것
-
비선형
-
- 트리
-
-
- 이진 트리
-
-
-
- Btree
-
-
- 그래프
-
-
- 방향성 유무에 따라서
-
자료구조를 평가 하는법
- O() 시간 복잡도 = 최악의 알고리즘 계산 속도
배열과 링크드리스트 구별
-
배열의 특징
-
인덱싱을 활용하면 접근속도는 O(1)입니다.
-
링크드 리스트의 특징
-
- 전체 1번 순회를 해야 하므로 접근 속도는 O(n)
튜플이 쓰이는 이유:
-
- 리스트 자체의 디폴트값 크기 가 크므로
-
- 상대적으로 튜플자체가 가볍다
-
- 클래스를 굳이 안만들더라도 리스트내에 클래스의 속성의 성질을 쓸 수 있습니다.
-
- 네임드 튜플로 클래스 변수먕(키) 선언도 가능하다.
중복된 리스트를 셋으로 중복을 제거하는 과정
-
- 2,1,1의 경우
-
- 2의 해쉬값을 구한후 2에 다시저장합니다.
-
- 1의 해쉬값을 구한후 1에 다시 저장합니다.
-
- 1의 해쉬값을 구한후 1을 덮어 씌웁니다.