선형 구조
- List
- Array List
- 배열 이용하여 구현
- 장점 : index 통한 순차적 접근 유리
- 단점 : 삽입, 삭제 시 계산량 많아짐 (해당 index 기준으로 앞/뒤 shift 연산 필요) - Linked List
- node = data + next로 구성 : next에 다음 node 위치 저장
- 단일 연결 (Singly Linked List)
: 동적 메모리 사용하지만, 특정 데이터를 찾으려면 head부터 찾아야 함
- 이중 연결 (Doubly Linked List)
: 양방향으로 각 node의 전, 후 알 수 있지만, pointer를 2개 보유해야 함
- 원형 연결 (Circular Linked List)
: 마지막 node의 next가 첫번째 node 가리킴
- Array List
- Stack
- LIFO : 마지막에 들어온 것이 먼저 나감
- Array / Linked List로 구현
- 함수 호출 및 재귀 프로그램 순서 제어, 서브루틴 호출 시 주소 저장 등에서 사용 - Queue
- FIFO : 먼저 들어간 것이 먼저 나감
- Array / Linked List로 구현
- 대기 행렬 처리, 운영체제 작업 스케쥴링 등에서 사용
- 원형 Queue : 1차원 배열을 원형으로 표현, mod 연산자로 n개의 공간을 0:n-1로 운용 - Deque
- Stack + Queue 장점으로 구성
- 삽입, 삭제가 list의 양 끝에서 모두 가능
- Scroll : 한쪽만 삽입 + 양쪽 삭제 가능
- Self : 양쪽으로 삽입 + 한쪽만 삭제 가능
비선형 구조
- Graph
- node(vertex) + edge
- 방향 : 간선 간 방향 존재 / 무방향 : 간선 통해 양방향 이동 가능
- 가중치 그래프 (=네트워크) : 간선에 가중치 할당
- DFS (Depth First Search) : 깊이 우선 탐색
- Stack 이용 - BFS (Breath First Search) : 너비 우선 탐색
- Queue 이용
- DFS (Depth First Search) : 깊이 우선 탐색
- Tree
- 방향 그래프 중 하나, 순환 불가능
- node, edge / root node, leaf node, internal node 구성
- 이진 트리 (Binary Tree) : 모든 node의 자식이 2개
- 포화 이진 트리 (Full Binary Tree) : 모든 node의 child node가 0개 또는 2개
- 완전 이진 트리 (Complete Binary Tree) : 왼쪽부터 차례대로 삽입하는 트리
- Perfect Binary Tree = Full + Complete - Heap : 최대/최소 연산 빠르게 하기 위한 완전 이진 트리
- 배열로 변환 시 중간에 null이 없음
- 이진 트리 (Binary Tree) : 모든 node의 자식이 2개
- Hash
- 특정 input 대한 일정 output 존재
- 파이썬의 Dictionary
- Hash Table : thread safe + null 넣을 수 없음
- Hash Map : thread non-safe + null 사용 가능
반응형
'REVIEW > INTERN+INTERVIEW' 카테고리의 다른 글
[NLP] 자연어처리 기초 (for 기술면접 대비) (0) | 2020.06.25 |
---|---|
[ML] 머신러닝 기초 (for 기술면접 대비) (0) | 2020.06.25 |
[CS] Python 기초 (for 기술면접 대비) (2) | 2020.06.25 |
[INTERVIEW] 엔씨소프트 2020 Summer Intern 면접 준비 (10) | 2020.06.16 |
[INTERVIEW] 네이버 NLP 직군 인턴 면접 후기 (0) | 2020.02.25 |