본문 바로가기

알고리즘4

[자료구조] 트리 Tree - 자바스크립트(Javascript)로 구현하기 트리(Tree) 트리는 비순차적인 자료 구조로 정보 검색에 용이하다. 부모 자식 관계를 가진 다수 노드로 구성된다. 밑의 그림과 같이 트리 모양의 자료구조를 트리라고 하는 것이다. 루트 root: 트리의 최상위 노드로 루트라고 한다. 그림에서는 12값을 가진 노드에 해당한다. 서브트리: 노드와 자식 노드로 구성되어있다. 그림에선 5,3,6 / 9,8,10 / 17,14,22 등이 해당한다. 노드 위에서 트리는 노드로 구성되어 있다고 하였다. 노드는 왼쪽 자식과 오른쪽 자식의 참조(포인터)를 가리킨다. 위의 그림에서 3,6,8,10,13,15,18,23 키에 해당하는 노드들은 자식이 없으므로 왼쪽 자식 참조 값과 오른쪽 자식 참조 값이 null이 된다. 루트 노드를 그림으로 나타내면 위와 같다. 이때 노드.. 2023. 9. 4.
[자료구조] 힙 Heap 자바스크립트(Javascript)로 구현하기 힙 Heap 이란? 최댓값과 최솟값을 찾아내는 연산을 빠르게 수행하고자 고안된 이진트리 기반 데이터 구조이다. 삽입과 삭제 시 O(log n)의 시간복잡도를 가진다. 최대 힙 Max Heap 상위 노드에 제일 큰 값이 위치한다. 위의 트리구조 힙을 배열로 나타내면 아래와 같다. 부모 노드 인덱스 & 자식 노드 인덱스 구하기 부모 노드 인덱스 : 자식 노드 인덱스 / 2 왼쪽 자식 노드 인덱스 : 부모 노드 인덱스 * 2 + 1 오른쪽 자식 노드 인덱스 : 부모 노드 인덱스 * 2 + 2 삽입 기존의 최소 힙에 새로운 값 17을 삽입한다고 해보자. → 코드 상에서 add(17)에 해당 위와 같이 마지막 노드의 왼쪽부터 삽입할 노드를 추가한다. 그 후 부모 노드와 크기를 비교하며 정렬해나간다. → 코드 .. 2023. 8. 29.
[알고리즘] 이분 탐색과 결정 알고리즘 - Javascript 예제 결정 알고리즘 결정 알고리즘은 이분 탐색을 이용한 알고리즘입니다. 이분 탐색이란 중간값을 기준으로 탐색의 범위를 설정하여 찾고자하는 값을 찾아내는 탐색법입니다. 이분 탐색에 대한 예제는 아래의 게시글로 확인하는 것을 추천합니다. [알고리즘] 이분 검색 / 이진 탐색 Binary Search - Javascript 예제 이분 검색 Binary Search 이분 검색은 이진 검색 알고리즘이라고도 한다. 오름차순으로 정렬된 배열에서 특정한 값의 위치를 찾아내는 알고리즘이다. 처음엔 중간값을 기준으로 중간값이 타겟값보 fe-paradise.tistory.com 예제: 무게가 다른 로봇들을 M개의 박스에 나눠 담고자 한다. 이때 박스의 최소 수용 무게를 구하라. (단, M개의 박스는 다 사용이 되어야한다. 또한,.. 2023. 3. 4.
[알고리즘] 이분 검색 / 이진 탐색 Binary Search - Javascript 예제 이분 검색 Binary Search 이분 검색은 이진 검색 알고리즘이라고도 한다. 오름차순으로 정렬된 배열에서 특정한 값의 위치를 찾아내는 알고리즘이다. 처음엔 중간값을 기준으로 중간값이 타겟값보다 큰 경우 중간값 기준 배열의 왼쪽을 탐색하고 그 반대의 경우 중간값 기준 배열의 오른쪽을 탐색한다. 만약 중간값이 타겟값일 경우엔 중간값의 위치가 반환되어진다. 시간 복잡도는 O(log n)이다. 글로 보면 어려우니 밑의 그림과 함께 설명을 보자! (전체 코드는 맨 밑에 있습니다.) 예제: 찾아야할 숫자는 51이고 주어진 배열은 [12, 38, 3, 64, 28, 11, 43, 51] 이다. 변수 설정 start: 탐색을 할 배열의 시작 위치이다. end: 탐색을 할 배열의 끝 위치이다. mid: 탐색 시 기.. 2023. 1. 23.