728x90
반응형
자료구조(Data Structure)
1. 문자열
둘 이상의 결합된 문자
- 불변성 : 기존 객체의 값을 바꾸는 것이 아닌 수정된 값을 가진 객체를 생성
- 문자열 끝에는 널 문자(종단문자, '\n') 반드시 들어감
없다면 출력시 쓰레기값이 같이 출력됨
2. 배열
연속된 메모리 공간에 순차적으로 저장된 데이터 모음
작업 | average case | worst case |
접근(read) | O(1) | O(1) |
삽입 및 추가(insert) | O(n) | O(n) |
삭제(delete) | O(n) | O(n) |
조회(search) | O(n) | O(n) |
- 동일한 데이터 유형을 가짐
- 각 요소에 접근하는 시간은 O(1) => 인덱스로 바로 접근 가능
- 연속된 메모리에 단일 블록화하여 데이터 저장(낭비되는 공간이 적음)
- 삽입 및 삭제시 모든 요소를 움직여줘야 하기 때문에 비용이 많이 들게 됨 O(n)
- 물리적으로 데이터가 순차적으로 저장되기 때문에 순서와 index가 있으며, 인덱싱과 슬라이싱이 가능
- indexing : index를 사용해 특정 요소를 리스트로부터 읽어들이는 것
- slicing : 요소에 특정 부분을 따로 분리해 조작하는 것
3. 연결 리스트(Linked List)
데이터를 감싼 노드에 포인터를 연결한 공간적인 효율성 좋은 자료구조
동적 추가, 삭제 효율적 / 특정 위치의 노드 검색 비효율적(차례대로 접근)
- 단순 연결 리스트 : Head에서 부터 Tail까지 다음 노드의 위치를 가리키면서 이동하는 구조(마지막 포인터는 NULL)
- 이중 연결 리스트 : 각 노드가 이전 노드와 다음 노드를 모두 참조하는 링크드 리스트
- 원형 연결 리스트 : Tail이 Head를 참조하는 링크드 리스트
4. 스택(Stack)
후입선출(LIFO : Last In, First Out) : 가장 나중에 들어온 데이터가 가장 먼저 나감(ex. 웹 페이지 뒤로가지, 문서작업 되돌리기 기능)
- 상단(stack top) : 스택에서 입출력이 이루어지는 부분
- 하단(stack bottom): 반대쪽 바닥 부분
- 요소(element): 스택에 저장되는 것
- 공백 스택(empty stack): 공백 상태의 스택
- 포화 스택(full stack): 포화 상태의 스택(풀스택)
스택의 연산
연산 | 기능 |
top() | 스택 맨 위에 있는 데이터 값 반환 |
push() | 스택에 데이터 삽입 |
pop() | 스택에서 데이터 삭제하여 반환 |
isempty() | 스택에 원소가 없으면 'True', 있으면 'False' 값 반환 |
isfull() | 스택에 원소가 없으면 'False', 있으면 'True' 값 반환 |
5. 큐(Queue)
선입선출(FIFO : First In, First Out / LILO : Last In, Last Out) : 가장 먼저 들어온 데이터가 가장 먼저 나감 / 가장 나중에 들어온 데이터가 가장 나중에 나감(ex. 은행 대기표, 수강신청 등)
데이터의 삽입과 삭제가 각각 한쪽 끝에서만 일어나는 구조
데이터는 front에서 삭제, rear에서 삽입
- enqueue() - 큐에 끝(rear)에 항목을 추가
- dequeue() - 큐에 맨 앞(front)에 항목을 제거
- peek() - 큐에 맨 앞(front)에 있는 항목을 반환
- isfull() - 큐가 가득 찼는지 확인
- isempty() - 큐가 비어 있는지 확인
작업 | Average | Worst |
접근(Access) | Θ(n) | O(n) |
검색(Search) | Θ(n) | O(n) |
삽입(Insert)(enqueue) | Θ(1) | O(1) |
삭제(Delete)(dequeue) | Θ(1) | O(1) |
6. 우선순위 큐(Priority Queue)
먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조
힙(Heap)을 이용해 구현
더보기
힙이란?
힙(Heap)은 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조
특징
- 완전이진트리의 형태로 이루어짐(완전이진트리랑 비슷하지만 노드간 대소관계 명확함)
- 부모노드와 서브트리간의 대소 관계가 성립함(반정렬 상태)
- 이진탐색트리(BST)와 달리 중복된 값이 허용됨
종류
- 최대 힙(Max Heap)
부모 노드의 키 값이 자식 노드보다 크거나 같은 완전이진트리
📝 key(부모노드) ≥ key(자식노드)
- 최소 힙(Min Heap)
부모 노드의 키 값이 자식 노드보다 작거나 같은 완전이진트리
📝 key(부모노드) ≤ key(자식노드)
[출처]
7. 맵(Map)
Map은 Key와 Value 한 쌍으로 이루어진 자료형(딕셔너리와 동일)
- Key는 중복을 허용하지 않음(Unique)
- List와는 다르게 순서가 없고 key로 매핑해 value를 반환함
- 객체의 속성(Property)을 자주 변경해야 할 때 유리함
[출처]
8. 해시 테이블(Hash Table)
key, value로 데이터를 저장하는 자료구조
빠르게 데이터를 검색할 수 있는 자료구조
- 각각의 key값에 해시함수(hash function)를 적용해 배열에 고유한 index를 생성하고, 이것을 버킷(슬롯)에 저장
- 고유한 index를 통해 값을 저장하거나 검색함
- key값으로 데이터를 찾기 때문에 함수를 한 번만 수행하면 됨 O(1)
[출처]
728x90
반응형
'크래프톤 정글 - TIL' 카테고리의 다른 글
크래프톤 정글 5기 TIL - Day 6(CS:APP) (0) | 2024.03.23 |
---|---|
크래프톤 정글 5기 TIL - Day 5-3 (0) | 2024.03.22 |
크래프톤 정글 5기 TIL - Day 5-1 (2) | 2024.03.22 |
크래프톤 정글 5기 TIL - Day 4 (0) | 2024.03.21 |
크래프톤 정글 5기 - 에세이 (0) | 2024.03.21 |