자료구조 5

HashTable

해싱(Hashing) 해싱이란 임의의 길이의 값을 해시 함수를 사용하여 고정된 크기의 값으로 변환하는 작업 해시 테이블(HashTable) 해싱을 사용하여 데이터를 저장하는 자료구조를 해시 테이블이라고 한다. 해시함수를 사용하여 변환한 값을 색인(index)로 삼아 키(Key)와 데이터(Value)를 저장하는 자료구조다. 해시 테이블 특징 순차적으로 데이터를 저장하지 않는다. Key를 통해서 Value를 얻을 수 있다. → 기본 연산(삭제, 삽입, 조회)의 시간 복잡도가 O(1)이다. 커다란 데이터를 해시해서 짧은 길이로 축약할 수 있기 때문에 데이터를 비교할 때 효율적이다. Value는 중복 가능하지만 Key는 고유한 한 개의 값이다. 보통 배열로 정의한다. 해시 함수 해시 함수에서 중요한 것은 고유한..

자료구조 2023.06.06

Stack, Queue

Stack 데이터를 일시적으로 저장하기 위해 사용되는 자료구조로, 데이터의 삽입과 삭제가 한쪽 끝에서만 일어나는 선형 자료구조이다. 가장 마지막에 삽입된 데이터가 가장 먼저 삭제되는 후입선출(Last-In-First-Out, LIFO)의 구조를 가지고 있다. 스택은 배열이나 연결 리스트로 구현할 수 있다. 스택은 일상 생활에서 쉽게 떠올릴 수 있는 예시로, 책을 쌓아놓는 책상이나, 접시를 쌓아놓는 상태에서 가장 위의 접시를 사용하는 것과 같은 구조를 가지고 있다. Stack의 활용 스택은 주로 함수 호출, 괄호 검사, 수식 계산 등에서 사용 수식 계산시 후위 표기법을 이용하여 수식을 스택에 쌓아 계산 가능 Stack의 연산 데이터 삽입 - push 데이터 삭제 - pop 데이터 반환 - top Stack..

자료구조 2023.05.16

Tree

계층적인 구조를 나타내기 위한 자료구조로, 하나의 루트(Root) 노드에서 시작하여 다수의 자식(Child) 노드를 가질 수 있으며, 각 자식 노드는 다시 하위 자식 노드를 가질 수 있는 구조이다. 노드 트리에서는 노드(Node)라는 개념이 중요한데, 각 노드는 데이터를 저장하는 역할을 하며, 다른 노드들과 링크(Link)로 연결되어 있다. 루트 노드는 트리의 시작점을 나타내며, 자식 노드는 부모 노드에서 링크로 연결된 하위 노드를 의미한다. 트리 용어 루트 노드(root node): 부모가 없는 노드, 트리는 하나의 루트 노드만을 가진다. 단말 노드(leaf node): 자식이 없는 노드, ‘말단 노드’ 또는 ‘잎 노드’라고도 부른다. 내부(internal) 노드: 단말 노드가 아닌 노드 간선(edge..

자료구조 2023.05.13

Array, Linked List

배열 Array 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 방법 메모리 상에서 데이터를 연속적으로 저장하는 것이 특징 장점 배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있고, 반복문과 결합하면 많은 정보도 효율적으로 처리 가능 데이터가 연속적으로 저장되어있기 때문에 index를 통한 접근이 가능 단점 배열의 크기는 선언할 때 고정되어야 함 데이터를 연속적으로 유지해야하기 때문에 삽입/삭제가 오래 걸림 배열 중간에 있는 데이터가 삭제되면, 공간 낭비가 발생함 동적배열이란? 동적배열 배열의 크기는 선언할 때 고정되어야 하기 때문에 동적으로 크기를 변경하는 것이 사실 어렵지만 가능하다. 동적 배열은 초기에 작은 크기의 배열을 선언하고 데이터가 추가될 때마다 크기를 동적으로 확장시키는 방법이..

자료구조 2023.05.12

Memory

메모리 구조 가상 메모리 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 할당해 RAM을 관리하는 방식 배경 실제 물리적인 메모리 용량에 한계가 있기 때문에 큰 단일 프로그램이나, 복수의 프로그램을 실행시킬 수 없다. 사용 보조기억장치에 가상의 메모리 공간을 확보하고 프로그램에서 필요한 부분만 메모리에 적재해서 사용한다. 물리적인 메모리가 부족한 경우에도 보조기억장치를 사용하여 프로그램을 실행할 수 있기 때문에, 시스템의 안정성과 신뢰성을 높일 수 있다. 사용 속도는 물리메모리보다 느리다는 단점이 있다. 운영체제는 가상메모리에서 단위 메모리 블록 개념을 사용하여 효율적으로 필요한 만큼의 메모리 공간을 할당한다. 메모리 구조 - 가상 주소 공간 가상 메모리에서 프로그램에 할당된 메모리 공간을 가상..

자료구조 2023.05.03