본문 바로가기

Python/알고리즘&자료구조15

Python 자료구조&알고리즘 - 해쉬 테이블(Hash Table) 1. 해쉬 테이블(Hash Table) 키(key)에 데이터(value)를 저장하는 데이터 구조 파이썬에서는 딕셔너리(dick)타입이 해쉬 테이블의 예 key를 통해 데이터를 바로 찾을 수 있으므로 검색 속도가 빠름 보통 배열로 미리 Hash Table 사이즈 만큼 생성 후에 사용 2. 알아둘 용어 해쉬(Hash) : 임의의 값을 고정 길이로 변환하는 것 해쉬 테이블(Hash Table): 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해쉬 함수(Hashing Function) : key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수 해쉬 값(Hash Values) 또는 해쉬 주소(Hash Address) : key를 해싱 하무로 연산해서 해쉬 값을 알아내고 이를 기반으로 해쉬 테이.. 2023. 1. 30.
Python 알고리즘&자료구조 더블 링크드 리스트(Doubly Linked List) 1. 더블 링크드 리스트(Doubly Linked List) 양뱡향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능 class Node: def __init__(self, data, prev=None, next=None): self.prev = prev self.data = data self.next = next class NodeMgmt: def __init__(self,data): self.head = Node(data) self.tail = self.head def insert(self,data): if self.head == None: self.head = Node(data) self.tail = self.head else: node = self.head while node.next: node.. 2023. 1. 29.
Python 자료구조&알고리즘 - 링크드리스트(Linked List) 1. 링크드리스트(Linked List) 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 구조 데이터의 삽입과 삭제가 매우 빠름 C언어에서는 중요한 자료구조지만, 파이썬에서는 리스트 타입이 링크드 리스트 역할도 모구 지원 1-1. 링크드 리스트의 용어 노드(node) : 데이터 저장 단위(데이터, 포인터)로 구성 포인터(pointer) : 각 노드 안에서 다음이나 이전의 노드와의 연결정보를 가지고 있는 공간 1-2. 링크드 리스트로 데이터 추가하기 1-3. 링크드 리스트 데이터 출력하기 문제 데이터 30과 40 사이에 35를 삽입하는 코드를 작성해보자 2. 객체지향 프로그래밍으로 링크드 리스트를 구현 추가 삭제 2023. 1. 28.
Python 자료구조&알고리즘 - 스택(stack) 1. 스택(stack) 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 구조 LIFO(Last Input First Out) 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 1-1. 스택의 구조 스택은 LIFO 또는 FILO 데이터 관리 방식 스택의 활용 : 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 기능 push() : 데이터를 스택에 쌓기 pop() : 데이터를 스택에서 꺼내기 1-2. 스택의 장점 구조가 단순해서 이해와 구조가 쉬움 데이터 저장/읽기 속도가 빠름 데이터 최대 개수를 미리 정해야 함(파이썬의 쟝우 재귀함수는 1000번까지만 호출이 가능) 저장 공간의 낭비가 발생할 수 있음(미리 최대 개수만큼 저장공간을 미리 확보하기 때문) 스택은 단순하고 빠른 성능을 위해 사용하므로 보통 배열 .. 2023. 1. 27.