Programming/Data Structure
-
Hash TableProgramming/Data Structure 2020. 11. 10. 08:35
1. 해쉬 구조 Hash Table: (key,value)를 가진 데이터 구조 Key를 통해 바로 데이터에 접근 가능하므로, 속도가 획기적으로 빨라짐 보통 배열로 미리 Hash Table 사이즈만큼 생성 후에 사용 (공간과 탐색 시간을 맞바꾸는 기법) key만 알면 어디에 저장되어야하는지, 어디에 저장되어 있는지 알 수 있다. 파이썬은 Dictionary사용 해쉬테이블 기반으로 만들어진 것이 블록체인 key -> 해쉬 함수 -> 해쉬 주소 -> 해쉬 테이블 접근 2. 해쉬 테이블 만들기 간단한 해쉬 테이블 만들기(python list 이용) hash_table = list([i for i in range(10)]) print(hash_table) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ..
-
링크드리스트Programming/Data Structure 2020. 10. 29. 08:39
연결리스트 1. 링크드리스트 구조 링크드리스트는 떨어진 곳을 존재하느 데이터를 포인터로 가르켜서 관리하는 구조 C언어에서는 포인터를 사용하여 다음 주소를 가르키도록 하지만, python에서는 객제지향을 가지고 구현 링크드리스트의 기본 용어 노드(Node) : 데이터의 기본 저장 단위(데이터값, 포인터)로 구성 포인터(Pointer) : 각 노드안에서 다음 Node와의 연결정보를 가지고 있음 2. Python으로 구현한 링크드 리스트 class Node: def __init__(self, data, next=None): self.data = data delf.next = next node1 = Node(1) node2 = Node(2) node1.next = node2 tNode = node1 while ..
-
StackProgramming/Data Structure 2020. 10. 19. 23:27
Stack에 대해서 알아보자 * 데이터를 제한적으로 접근할 수 있는 구조 * 한쪽끝에서만 데이터를 넣고 뺄수 있는 구조 * 가장 나중에 쌓은 데이터가 제일 먼저 나가는 구조 프로세스에서 많이 쓰임 1. 스택 구조 스택은 LIFO(Last In, First Out)구조 대표적인 함수 : push,(데이터 넣기), pop(데이터 빼기) Visualgo site에서 push, pop 기능으로 확인해보자 visualgo.net/en/list?slide=1 VisuAlgo - Linked List (Single, Doubly), Stack, Queue, Deque VisuAlgo is free of charge for Computer Science community on earth. If you like Visu..
-
QueueProgramming/Data Structure 2020. 10. 15. 08:25
Python에서 Queue에 대해서 정리 가장 먼저 넣은 것을 가장 먼저 꺼내는 구조 ex) 음식점에서 줄을 서는 행위, 먼저 줄 슨 사람이 먼저 받는다. FIFO(First In - First Out) // LILO(Last In - Last Out)은 Stack 구조 4,3,2,1,5의 순서대로 Data를 넣고, 차례로 뺄때는 4 3 2 1 5 의 순서로 빠진다. Data를 빼면 빠진 Data는 Queue에서 삭제된다. Queue 용어 EnQueue : Queue에 Data를 넣는 기능 DeQueue : Queue에서 Data를 빼는 기능 참고할만한 Site https://visualgo.net/en/list Queue를 클릭해서 보기 Python에서는 Queue 라이브러리를 지원한다. Queue()..
-
배열(Array)Programming/Data Structure 2020. 10. 14. 08:44
가장 기본이 되는 배열을 알아봅시다. 배열은 가장 기본적인 자료구조입니다. 모든 프로그래밍 언어에서 지원을 하고 있습니다. 배열에 "US"를 넣는다고 가정해봅시다. index 0 1 2 value U S 배열은 index가 있습니다. index를 알면 특정 요소에 빠르게 접근이 가능합니다. 0번째 index는 "0"을 가지고 있고, 1번째 index에서는 "S"를 가지고 있습니다. 배열의 장점 - 빠른 접근 가능 우리가 많이 사용하는 C언어 배열입니다. C언어에서는 배열의 크기를 지정해야되고, 배열의 크기가 가변적으로 늘어날 수 없습니다. 즉, 한번 생성하면 배열 크기의 수정이 어렵습니다. 아래 코드에서도 3이라는 크기를 지정을 합니다. 물론 동적으로 크기를 지정하는 방법도 있습니다. int main()..