자료구조
-
1. 특징 데이터에서 최댓값/최솟값을 빠르게 찾을 수 있는 완전 이진 트리 (complet binary tree) 완전 이진 트리란? 노드를 삽입할 때 최하단 왼쪽 노드부터 채워지는 트리 최댓값과 최솟값의 시간복잡도, 데이터 삭제 및 삽입의 시간복잡도는 $O(logn)$ (depth가 한 단계씩 내려가면서 체크횟수를 1/2로 줄여주기 때문) 값의 중복을 허용함 좌/우 노드 간 값의 크기는 상관 없음 2. 구조 최대 힙 Max heap / 최소 힙 Min heap 최대 힙 : 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다 (최소 힙은 반대 - 자식 노드보다 부모 노드의 값이 항상 같거나 더 작다) → 최댓값은 탐색할 필요도 없이 root node\ 3. 힙& 이진 탐색 트리의 비교 공통..
[자료구조] 힙 (Heap)1. 특징 데이터에서 최댓값/최솟값을 빠르게 찾을 수 있는 완전 이진 트리 (complet binary tree) 완전 이진 트리란? 노드를 삽입할 때 최하단 왼쪽 노드부터 채워지는 트리 최댓값과 최솟값의 시간복잡도, 데이터 삭제 및 삽입의 시간복잡도는 $O(logn)$ (depth가 한 단계씩 내려가면서 체크횟수를 1/2로 줄여주기 때문) 값의 중복을 허용함 좌/우 노드 간 값의 크기는 상관 없음 2. 구조 최대 힙 Max heap / 최소 힙 Min heap 최대 힙 : 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다 (최소 힙은 반대 - 자식 노드보다 부모 노드의 값이 항상 같거나 더 작다) → 최댓값은 탐색할 필요도 없이 root node\ 3. 힙& 이진 탐색 트리의 비교 공통..
2022.07.27 -
current와 parent의 라임 속에서 허덕이는 자료구조입니다. 1. 용어 ▶ Node 노드: 트리에서 데이터를 저장하는 기본 요소 + 연결된 다른 노트에 대한 branch 정보 ▶ edge = branch: 노드를 연결하는 선 ▶ Root node: 트리의 가장 위에 있는 노드 ▶ Parent node: 위아래로 연결되어 있는 두 개의 노드 중 위에 있는 노드 ▶ Child node: 위아래로 연결되어 있는 두 개의 노드 중 아래에 있는 노드 ▶ Leaf Node (terminal node): childe node가 없는 노드 ▶ Level: Root node로부터 하위 branch로 연결된 노드의 길이 (root node: level 0) ▶ Depth 깊이: Root node로부터 노드까지 거쳐..
[자료구조] 트리 (tree)current와 parent의 라임 속에서 허덕이는 자료구조입니다. 1. 용어 ▶ Node 노드: 트리에서 데이터를 저장하는 기본 요소 + 연결된 다른 노트에 대한 branch 정보 ▶ edge = branch: 노드를 연결하는 선 ▶ Root node: 트리의 가장 위에 있는 노드 ▶ Parent node: 위아래로 연결되어 있는 두 개의 노드 중 위에 있는 노드 ▶ Child node: 위아래로 연결되어 있는 두 개의 노드 중 아래에 있는 노드 ▶ Leaf Node (terminal node): childe node가 없는 노드 ▶ Level: Root node로부터 하위 branch로 연결된 노드의 길이 (root node: level 0) ▶ Depth 깊이: Root node로부터 노드까지 거쳐..
2022.07.26 -
1. 구조와 용도 방대한 데이터를 고정된 길이로 변환하는 기능을 말합니다. 키key에 데이터data를 저장하는 데이터 구조이며, 키를 통해 데이터를 바로 받아올 수 있어 획기적으로 속도가 빠른 자료구조입니다. 파이썬에서는 dictionary type과 방식이 같으므로 별도의 구현 없이 딕셔너리를 사용하면 됩니다. 검색이 많이 필요한 경우, 저장과 삭제 및 읽기가 빈번한 경우, 웹 프로그래밍 시 캐쉬의 구현(중복 확인)이 필요한 경우에 사용합니다. 2. 용어 Hash 해쉬: 임의의 값을 고정 길이로 변환하는 것 Hash table 해쉬 테이블: 키 값의 연산에 의해 직접 접근이 가능한 데이터구조 Hashing Function 해싱 함수: 키에 대해 산술연산을 이용해 데이터 위치를 찾을 수 있는 함수 혹은 ..
[자료구조] 해쉬 테이블 (Hash table)1. 구조와 용도 방대한 데이터를 고정된 길이로 변환하는 기능을 말합니다. 키key에 데이터data를 저장하는 데이터 구조이며, 키를 통해 데이터를 바로 받아올 수 있어 획기적으로 속도가 빠른 자료구조입니다. 파이썬에서는 dictionary type과 방식이 같으므로 별도의 구현 없이 딕셔너리를 사용하면 됩니다. 검색이 많이 필요한 경우, 저장과 삭제 및 읽기가 빈번한 경우, 웹 프로그래밍 시 캐쉬의 구현(중복 확인)이 필요한 경우에 사용합니다. 2. 용어 Hash 해쉬: 임의의 값을 고정 길이로 변환하는 것 Hash table 해쉬 테이블: 키 값의 연산에 의해 직접 접근이 가능한 데이터구조 Hashing Function 해싱 함수: 키에 대해 산술연산을 이용해 데이터 위치를 찾을 수 있는 함수 혹은 ..
2022.07.19 -
in Python: list, tuple 배열은 같은 종류의 데이터를 효율적으로 관리하기 위해 사용하는 기본적인 자료구조입니다. 데이터들을 연결된 공간에 저장하되, 순서를 유지한 채 저장됩니다. 장점 ▶인덱스를 통해 빠른 접근 가능 단점 ▶배열의 사이즈를 미리 설정해주어야 함 = 연관된 데이터의 추가가 어렵다 ▶데이터를 추가 혹은 삭제가 쉽지 않다 강의 내용 자체가 길지 않아서 이어드림스쿨 4월에 배웠던 list 기초 수업내용 추가해보겠습니다. ar1 = [10,20,30,40,50] ar2 = [80] #list 끝에 값 추가 - append ar.append(60) #특정 위치에 값 추가 - insert, 0번 위치에 5를 삽입 ar.insert(0,5) #리스트 간 덧셈 (연결)이 가능하다 ar1 ..
[자료구조] 배열 (array)in Python: list, tuple 배열은 같은 종류의 데이터를 효율적으로 관리하기 위해 사용하는 기본적인 자료구조입니다. 데이터들을 연결된 공간에 저장하되, 순서를 유지한 채 저장됩니다. 장점 ▶인덱스를 통해 빠른 접근 가능 단점 ▶배열의 사이즈를 미리 설정해주어야 함 = 연관된 데이터의 추가가 어렵다 ▶데이터를 추가 혹은 삭제가 쉽지 않다 강의 내용 자체가 길지 않아서 이어드림스쿨 4월에 배웠던 list 기초 수업내용 추가해보겠습니다. ar1 = [10,20,30,40,50] ar2 = [80] #list 끝에 값 추가 - append ar.append(60) #특정 위치에 값 추가 - insert, 0번 위치에 5를 삽입 ar.insert(0,5) #리스트 간 덧셈 (연결)이 가능하다 ar1 ..
2022.07.13 -
스택 구조는 데이터를 제한적으로 접근할 수 있는 구조, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조라는 점에서 큐와 유사하지만 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조라는 점에서 반대입니다. ctrl+z를 통해 바로 이전의 행동을 취소하는 것과 비슷합니다. 앞의 포스팅에서 언급한 것과 마찬가지로 LIFO (last-in, first-out) 데이터 관리 방식을 따릅니다. (혹은 FILO, first-in, last-out) 활용 ▶ 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 → 프로그램 안의 다양한 함수들이 동작하는 방식에 쓰이는 자료구조 #재귀함수로 이해해보기 def recursive(num): if num
[자료구조] Stack 스택스택 구조는 데이터를 제한적으로 접근할 수 있는 구조, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조라는 점에서 큐와 유사하지만 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조라는 점에서 반대입니다. ctrl+z를 통해 바로 이전의 행동을 취소하는 것과 비슷합니다. 앞의 포스팅에서 언급한 것과 마찬가지로 LIFO (last-in, first-out) 데이터 관리 방식을 따릅니다. (혹은 FILO, first-in, last-out) 활용 ▶ 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 → 프로그램 안의 다양한 함수들이 동작하는 방식에 쓰이는 자료구조 #재귀함수로 이해해보기 def recursive(num): if num
2022.07.08