본문 바로가기

CS/자료구조

(5)
5. 해쉬 테이블(Hash Table) 해쉬 테이블(Hash Table) 해쉬 구조 key에 value를 저장하는 데이터 구조 파이썬에서는 딕셔너리 타입을 사용하면 돼서 구현할 이유가 없음 용어 Hash : 임의 값을 고정 길이로 변환하는 것 해쉬 테이블 : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱 함수 : key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수 해쉬 값 또는 해쉬 주소 : key를 해싱 함수로 연산해서, 해시 값을 알아내고, 이를 기반으로 해시 테이블에서 해당 key 에 대한 데이터 위치를 일관성 있게 찾을 수 있음 슬롯 : 한 개의 데이터를 저장 할 수 있는 공간 저장할 데이터에 대해 key를 추출할 수 있는 별도 함수도 존재할 수 있음 예 hash_table = list([i for i in..
4. 링크드 리스트(Linked List) 링크드 리스트(Linked List) 링크드리스트 구조 연결 리스트라고도 함 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 파이썬은 리스트 타입이 링크드리스트 기능을 모두 지원 노드 : 데이터 저장 단위 (데이터 값, 포인터)로 구성 포인터 : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 갖고 있음 예 Node 구현 보통 파이썬에서 링크드 리스트 구현 시, 파이썬 클래스를 사용함 class Node : def __init__(self, data) : self.data = data self.next = None class LinkedList : def __init__(self, data, nex..
3. 배열(Array) 배열(Array) 배열 사용 같은 종류의 데이터를 효율적으로 관리 같은 종류의 데이터를 순차적으로 저장 장점 : 빠른 접근 가능(인덱스 번호로 접근) 단점 : 데이터 추가, 삭제가 어려움 파이썬 배열 파이썬은 리스트로 배열 구현 가능 data_list = [1,2,3,4,5] 연습 dataset = ['Braund, Mr. Owen Harris', 'Cumings, Mrs. John Bradley (Florence Briggs Thayer)', 'Heikkinen, Miss. Laina', 'Futrelle, Mrs. Jacques Heath (Lily May Peel)', 'Allen, Mr. William Henry', 'Moran, Mr. James', 'McCarthy, Mr. Timothy J'..
2. 스택 (Stack) 스택 - 데이터를 제한적으로 접근(한 쪽 끝에서만 자료를 넣거나 뺄 수 있음) - 가장 나중에 쌓은 데이터를 가장 먼저 빼내는 데이터 구조 - 컴퓨터 내부 프로세스 구조의 함수 동작 방식 - push() : 데이터를 스택에 넣기 - pop() : 데이터를 스택에서 꺼내기 data_stack = list() data_stack.append(1) data_stack.append(2) print(data_stack) print(data_stack.pop()) [1, 2] 2 stack_list = list() def push(data): stack_list.append(data) def pop(): data = stack_list[-1] # -1 : 마지막 데이터 del stack_list[-1] return..
1. 큐(Queue) 큐 queue - 줄을 서는 것과 비슷 - 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조 FIFO, LILO, 스택과 반대 - 멀티테스킹을 위한 프로세스 스케줄링 방식 구현에 많이 사용됨 - Enqueue : 큐에 데이터를 넣는 기능 - Dequeue : 큐에서 데이터를 꺼내는 기능 파이썬 라이브러리 - Queue() : 가장 일반적인 큐 자료구조 - LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조 - PriorityQueue() : 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력 Queue import queue data_queue = queue.Queue() data_queue.put("str") data_queue.put(123) print(data_queue..