본문 바로가기

분류 전체보기

(172)
[자료구조] 해쉬테이블 (Hash Table) 해쉬 구조 키(Key)에 데이터(Value)를 저장하는 구조 Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 매우 빠르다 파이썬 Dictionary타입 = 해쉬테이블의 예시 보통 배열로 미리 해쉬테이블 사이즈만큼 생성한 후에 사용 = 공간과 탐색시간을 맞바꾸는 기법 용어 해쉬(Hash) : 임의값을 고정길이로 변환하는 것 해쉬테이블(Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱함수(Hashing Function) : 키에 대해 산술연산을 이용해 데이터위치를 찾을 수 있는 함수 해쉬값(Hash Value) : 키를 해싱함수로 연산해서 해쉬값을 알아내고, 이를 기반으로 해쉬테이블에서 해당 키에 대한 데이터 위치를 일관성있게 찾을 수 있음 슬롯(Slot) : 한개..
[자료구조] 링크드리스트 (linked list) 링크드 리스트 구조 연결 리스트라고도 한다 배열 : 순차적으로 연결된 공간에 데이터를 나열하는 구조 링크드 리스트 : 떨어진 곳에 있는 데이터를 화살표로 연결하는 구조 기본구조 & 용어 노드 (Node) : 데이터 저장단위로 구성 (데이터값+포인터) 포인터(pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결정보를 가지고 있는 공간 링크드 리스트 장단점 장점 미리 데이터 공간을 할당하지 않아도 됨 단점 연결을 위한 별도의 데이터 공간이 필요 = 저장공간 효율이 낮음 연결 정보를 찾는 시간이 필요하므로 접근속도가 느림 중간 데이터 삭제시, 앞뒤 데이터의 연결을 재구성해야 하는 부가적인 작업 필요 링크드 리스트 구현 class Node: def __init__(self, data, next=No..
[자료구조] 스택 (stack) 스택 구조 후입 선출 : 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 구조 데이터에 제한적으로 접근 (한쪽 끝에서만 데이터를 넣거나 뺌) 기능 push() : 데이터를 스택에 넣기 pop() : 데이터를 스택에서 꺼내기 스택의 장단점 장점 구조가 단순해서 구현이 쉽다 데이터 저장/읽기 속도가 빠르다 단점 데이터 최대 갯수를 미리 지정해야한다 저장공간의 낭비가 발생 파이썬 리스트 기능 append(push), pop() 메소드를 이용하여 스택기능 구현
[자료구조] 큐 (queue) 큐 구조 선입선출 = 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 FIFO(First-in, First-out) 또는 LILO(Last-in, Last-Out) 스택과 꺼내는 순서가 반대 용어 Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 파이썬 큐 라이브러리 Queue() : 가장 일반적인 큐 자료 구조 LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조 (=스택) PriorityQueue() : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력