나는 이렇게 학습한다/Algorithm & SQL 405

자료구조 _ Hash table

Hash table은 무엇인가요? 해시테이블은 효율적인 탐색(빠른 탐색)을 위한 자료구조로 키-값 쌍의 데이터를 입력받습니다. hash function h에 key값을 입력으로 넣어 h(k)를 위치로 지정하여 키-값 쌍을 저장합니다. 저장, 삭제, 검색의 시간복잡도는 모두 O(1)입니다. 좀 더 자세히 알아볼까요~ Direct-address Table을 먼저 알아봅시다. 직접 주소화 테이블이란? 키를 인덱스로 설정하여 저장하는 방식입니다. 직접 주소화 테이블의 단점은 키에 따라 빈공간이 생기고 공간을 낭비하게 됩니다. 또한 인덱스에 다양한 자료형의 키를 저장할 수 없습니다. 이러한 단점들을 보완하기 위해 해시 테이블을 사용합니다. 해시 테이블 해시 테이블은 hash function h를 이용, (키, 값..

자료구조 _ Queue 그리고 Stack

Queue는 무엇인가요? 큐는 줄 형태의 선입선출 자료구조입니다. 활용예시는 프린트 출력, 은행창구 번호표 대기, 너비우선탐색(BFS) 등이 있습니다. enqueue : 데이터 추가 dequeue : 데이터 추출 시간복잡도는 둘 다 O(1)입니다. array-based queue vs list-based queue array-based queue : 배열 기반 큐는 선입선출 과정에서 남는 메모리가 생깁니다. 이는 circular queue로 해결할 수 있습니다. *circular queue는 배열이 끝까지 차면 첫부분에 비어있는 공간으로 다시 채우기 시작하는 것을 뜻합니다. 만약 공간이 없어서 채울 수 없게 되면 dynamic array와 같은 방법으로 array의 크기를 늘려야 합니다. list-bas..

자료구조 _ Linked List란?

Linked List는 무엇인가요? Linked List는 노드라는 구조체 안에 데이터와 다음 노드의 address를 가지고 있는 자료구조를 말합니다. Linked List는 물리적인 메모리상에는 비연속적이나 다음 노드를 가리키는 address가 있기때문에 논리적인 연속성을 가지고 있다고 할 수 있습니다. 장점 - Array와 달리 데이터가 추가되는 시점에 메모리가 할당되기 때문에 메모리를 효율적으로 사용할 수 있습니다. - 시간복잡도는 데이터 삽입/삭제의 경우 다음 address만 수정하면 되기 때문에 O(1)입니다. 단점 - 다음 노드의 address를 가지고 있어야하기 때문에 데이터 하나당 차지하는 메모리가 커집니다. - 데이터 조회의 경우 Linked List는 순차적인 접근만 가능하기 때문에 O..

자료구조 _ Array와 Dynamic Array

Array는 무엇인가요? Array는 데이터를 메모리상에 연속적으로, 미리 할당된 크기만큼 저장하는 자료구조 입니다. Array의 특징 - 고정적 저장 공간이 필요합니다. - 메모리에 연속적으로 저장합니다. 시간복잡도 - 램덤액세스(즉시 접근 가능 - 순차(X)) 방식이기 때문에 조회는 O(1)입니다. - 마지막 삽입, 삭제도 O(1)입니다. - 다만 일반 삽입, 삭제는 O(n)입니다. 장단점 - Array의 장점은 조회가 빠르다는 것입니다. - Array의 단점은 고정된 저장 공간을 필요로 하기 때문에 Array의 크기를 미리 정해야 한다는 것입니다. - 때문에 메모리 낭비나 추가적인 오버헤드가 발생할 수 있습니다. *오버헤드 : Array 크기를 변경하면서 데이터 이동에 따라 발생하는 리소스 데이터가..