코딩한걸음
article thumbnail
[자료구조] 배열 (Array)
CS/Algorithm 2023. 8. 23. 09:00

본 포스트는 필자가 학습하고 작성한 글이기 때문에 틀린 내용이 있을 수 있습니다. 배열 (Array) 배열은 연속된 메모리 공간에 순차적으로 저장된 데이터 모음이다. 종류 1차원 배열 : 가장 기본적인 형태의 배열로, 연속된 메모리 공간에 동일한 타입의 원소들을 저장한다. 다차원 배열 : 1차원 배열의 집합을 원소로 갖는 배열. 핵심 요소 원소 (Element) : 배열에 저장되는 각 항목을 의미 인덱스 (Index) : 각 원소의 위치를 나타내는 번호로, 0부터 시작 장점 인덱스를 통해 바로 원소에 접근 가능 연속된 메모리 공간에 데이터를 저장하기 때문에 메모리 사용이 효율적 단점 배열의 크기는 미리 정해져 있어, 크기를 변경하기가 어렵다. 중간에 데이터를 삽입하거나 삭제할 때, 데이터를 이동해야하므로..

[자료구조] 해시 테이블 (Hash Table)
CS/Algorithm 2023. 8. 22. 09:00

본 포스트는 필자가 학습하고 작성한 글이기 때문에 틀린내용이 있을 수 있습니다. 해시 (Hash) 해시는 데이터를 다른 데이터로 매핑하는 프로세스를 의미한다. 이를 위해 해시 함수를 사용하여 어떤 값을 고정된 크기의 값으로 변환한다. 해시 함수 (Hash Funtion) 입력 받은 값을 '일정한 길이의 해시 값'으로 변환 동일한 입력 값에 대해서는 항상 동일한 출력 값(해시 값 or 해시 코드)을 반환 작은 입력 값의 변화에도 출력 값이 크게 바뀐다(높은 민감도) 해시 테이블 (Hash Table) 해시 테이블은 키와 값의 쌍을 저장하는 데이터 구조다. 핵심 요소 키 (Key) : 유일한 값으로, 해시 함수를 통해 해시 값으로 변환 해시 함수 (Hash Funtion) : 키를 받아 해시 값을 반환하는 ..

article thumbnail
[자료구조] 힙 (Heap)
CS/Algorithm 2023. 8. 21. 09:00

본 포스트는 필자가 합습하고 작성한 글이기 때문에 틀린 내용이 있을 수 있습니다. 참고 : https://maneeshaindrachapa.medium.com/heap-data-structure-in-golang-98641a32d2e3 힙 (Heap) 개요 힙은 완전 이진 트리 (Complete Binary Tree)의 일종으로 주로 우선순위 큐 (Priority Queue)를 구현하는데 사용 종류 최대 힙 (Max Heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 항상 크거나 같은 트리 최소 힙 (Min Heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 항삭 작거나 같은 트리 장점 루트 노드에서 쉽게 가장 높은(최대 힙) 또는 가장 작은(최소 힙) 원소에 접근 가능하다. 동적으로 크기..

article thumbnail
[자료구조] 스택 (Stack)
CS/Algorithm 2023. 8. 20. 19:00

본 포스트는 필자가 학습하고 작성한 글이기 때문에 틀린 내용이 있을 수 있습니다. 스택 (Stack) 개요 데이터를 저장하는 기본적인 자료 구조 중 하나로, 선입후출(LIFO: Last In, First Out)의 특성을 가진다. 즉, 마지막에 추가된 항목이 가장 먼저 제거된다. 장점 구현이 간단하다. 데이터의 추가와 삭제의 시간 복잡도가 O(1)이다. 단점 스택의 크기가 고정된 경우, 스택 오버플로우(스택이 가득 참)나 스택 언더플로우(스택이 비어 있음)가 발생할 수 있다. 스택의 중간 데이터에 접근하기 어렵다. 주요 연산 push : 스택의 맨 위에 새로운 항목을 추가합니다. pop : 스택의 맨 위 항목을 제거하고 반환합니다. peek or top : 스택의 맨 위 항목을 확인하되 제거하진 않습니다..

article thumbnail
[자료구조] 연결 리스트 (Linked List)
CS/Algorithm 2023. 8. 14. 10:00

본 포스트는 필자가 학습하고 작성한 글이기 때문에 틀린 내용이 있을 수 있습니다. 참고 : https://hudi.blog/ds-linked-list/ Array와 List 배열(Array)와 리스트(List)의 컴퓨터 공학적 개념을 먼저 알고 가자. Array 고정된 크기를 가짐 메모리에 연속적인 공간을 할당받아 데이터를 저장 인덱스를 통해 데이터 접근이 빠름 중간의 있는 원소들의 삽입/삭제가 느림 삽입/삭제 후 뒤에있는 모든 원소들의 자리를 변경해줘야 하기 때문 List 동적인 크기를 가짐 각 원소는 다음 원소를 가리키는 포인터(Pointer)로 순서를 구현 크기 변경, 데이터 삽입/삭제 등이 용이 구현 방식에 따라 데이터 접근 속도가 배열보다 느릴 수 있음 Python에서의 List Python에서..