자료구조와 게임 알고리즘(15)
-
자료구조_14.탐색(2)
MAPMap은 자료를 저장하고 키를 이용해 원하는 자료를 빠르게 찾을 수 있도록 하는 자료구조 입니다.key에 대응하는 value도 같이 저장하는 컨테이너입니다.#include에 들어있습니다. 중복저장을 되지 않고 전체 조회시 정렬된 상태로 출력이 됩니다.추가, 탐색, 삭제 시간 복잡도는 O(log n)입니다. 그 이유는 검색트리의 작업들은 트리의 높이(깊이)와 밀접한 관련이 있습니다.균형 이진 검색 트리는 O(log n)-시간 검색, 삽입, 삭제를 보장해줍니다. 해시테이블다른 탐색 방법들은 키 값 비교하여 항목에 접근하고키 값의 연산에 의해 직접 접근이 가능한 구조입니다. 해시테이블은 배열과 비슷하게 여러 자료를 담을 수 있는 메모리 공간 할당입니다. 하지만 다른점은 인덱스가 아닌 키를 사용하여 ..
2024.07.31 -
자료구조_13.탐색(1)
탐색이란여러 개의 자료 중에서 원하는 자료를 찾는 작업입니다.컴퓨터가 가장 많이 하는 작업중의 하나이기에탐색을 효율적으로 수행하는 것은 매우 중요합니다 이진탐색 이진탐색은 우선 시작과 끝의 합을 나누기 2 해서 중앙값를 찾습니다.그리고 구한 중앙값을 타겟과 비교하여 타겟보다 큰 경우 미드를 시작으로 하여 미드보다 큰 값중에서 또 타겟을 찾습니다.(작은경우 끝으로 바꿈)위의 GIF를 기준으로 설명하자면미드인 4와 타겟인 5를 비교하면 5가 더 크기에시작값을 4에 1을 더한 5로 바꿉니다 그 이후 미드인 7과 5를 비교합니다.미드값이 타겟보다 크기에 끝을 6으로 바꿉니다.그 다음미드인5와 5를 비교하여 같기 때문에 탐색이 완료되는 상황입니다. 이진탐색의 단점은 꼭 정렬이 되어있어야 한다는 점입니다. 시간..
2024.07.29 -
자료구조_12.정렬
정렬은 자료를 순서대로 정리 해주는 것을 말합니다.정렬의 종류를 알아보고 구현 방식을 알아보겠습니다. 버블정렬 버블정렬은 앞의 자료와 뒤의 자료의 크기를 비교하여더 큰 수를 뒤로 보내는 정렬 방식입니다. 코드는 이렇게 구현하면 됩니다.#pragma region "bubble"int main() { int a[101], n, i, j, tmp; cin >> n; for (i = 0; i > a[i]; } for (i = 0; i a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } for (i = 0; i 선택정렬 선택정렬은 가장 배열중 가장 작은 수를 찾아그 수를 배열의 맨 앞으로 보내는 정렬입니다.선택 정렬의 구현 방식은 이..
2024.07.27 -
자료구조_11 . 연결리스트
리스트• 리스트에는 항목들이 차례대로 저장되어 있음 • 리스트의 항목들은 순서 또는 위치를 가짐 • 예 : 오늘 해야 할 일, 버킷 리스트, 요일들(월, 화 수, 목..) • 스택, 큐도 넓게 보면 리스트의 일종 연결리스트• 자료를 저장하고 있는 노드와 다음 자료의 위치를 가리키는 포인터로 구성 • 동적으로 크기가 변함• 삭제, 삽입 시 데이터 이동할 필요가 없음 배열 VS 연결리스트• 인덱스로 자료에 접근하므로 탐색시간이 빠르다 ↔ 특정 노드에 접근하기 위해 이전 노드들을 탐색해야 하므로 탐색시간이 오래 걸린다 0(n) • 임의의 원소를 삽입하거나 삭제할 때 많은 양의 원소를 이동시켜야 한다 ↔ 노드의 이동이 불필요하여 삽입, 삭제가 용이하다 O(1) • 자료의 크기가 배열의 크기에 제약을 받는다 ↔ ..
2024.04.30 -
자료구조_10.큐
큐의 이해- 선입 선출(FIFO,First-in First-out):가장 먼저 삽입되는 개체가 가장 먼저 삭제되는 구조, 편의점에서 물건 채울때 원리- 전단(front)은 큐에서 삭제가 일어나는 곳- 후단(rear)응 큐에서 삽입이 일어나는 곳 큐의 연산 - 삽입(Enqueue)- 비어 있는 큐의 초기 상태에는 Front와 Rear 값 모두 -1로 설정,- 자료가 삽입될 때마다 Rear가 1씩 증가하며 이동- 새로운 자료를 삽입하기 위해서는 먼저 Rear 포인터를 증가시키고, 그 위치에 자료를 입력 큐의 연산 - 삭제(Dequeue)- Front 포인터가 1씩 증가하며 자료를 삭제- 마지막으로 입력된 자료가 삭제되면 Front포인터와 Rear 포인터의 값이 같아짐 큐의 연산큐의 단점- 아래의 사진은 4..
2024.04.30 -
자료구조_09.스택
스택 한쪽 끝에서만 데이터를 삽입(Push)하거나 삭제(Pop)할 수 있는 구조 후입 천출(LIFO:Last In First Out)구조 스택의 구조 삽입(push) Top 포인터: 가장 나중에 삽입되는 데이터를 가리킴 (=삭제할 지점을 가리킴) - 삽입하고 top포인터를 1증가시켜야함 삭제(pop) Top 포인터: 가장 나중에 삽입되는 데이터 가리킴(= 삭제할 지점을 가리킴) 스택에서 발생하는 오류 오버플로(overflow) 언더플로(underflow)
2024.04.15