본문 바로가기

Algorithm/개념 정리7

[알고리즘 / Swift] 힙 Heap Heap 이란? 데이터에서 최댓값 최솟값을 빠르게 찾기 위해 고안된 완전 이진트리로 우선순위 큐를 위해 만들어진 자료구조 최대힙(max heap) : 부모노드 ≥ 자식노드 최소힙(min heap) : 부모노드 ≤ 자식노드 💡 완전 이진 트리란? 이진트리 = 자식 노드가 최대 두 개인 트리 완전 이진트리 = 마지막 레벨을 제외한 모든 노드가 2개씩 채워져 있으며, 최하단 레벨 또한 좌측부터 채워져있는 노드를 의미한다. 즉 완전 이진트리는 왼쪽부터 자식 노드를 차례로 채운다. index 성질 heap은 완전 이진 트리 구조이기 때문에 노드 간 인덱스 관계를 나타낼 수 있다. → 완전 이진트리는 무조건 왼쪽부터 채워지기 때문에 채워지는 순서가 있음 = index 부모 노드 index = 자식 노드 index .. 2024. 3. 13.
트리와 그래프 내용 정리 트리와 그래프 그래프란? 그래프는 vertex와 edge로 구성된 한정된 자료구조를 의미한다. vertex는 정점, edge는 정점과 정점을 연결하는 간선이다. 그래프의 종류 무방향 그래프 간선에 방향이 존재하지 않아 양방향으로 이동이 가능하다. (A,B), (B,A)는 동일한 간선이다 방향 그래프 간선에 방향이 존재하는 그래프로 지정된 방향으로만 이동이 가능하다. A->B로 가는 간선은 로 표시하며 와는 다른 간선이다. 가중치 그래프 간선에 비용이나 가중치가 할당된 그래프이다. 완전 그래프 한 정점에서 모든 다른 정점과 연결되어 최대의 간선수를 가지는 그래프 단순 그래프 두 정점 사이의 연결선이 최대 한 개인 그래프 부분 그래프 원래의 그래프에서 일부 정점이나 간선을 제거해 만든 그래프 그래프 구현 방.. 2021. 12. 5.
이분 탐색 정리 이분 탐색 이분 탐색이란? 정렬되어 있는 배열에서 탐색을 할 때, 탐색 범위를 반씩 나누어 탐색하는 방법 장단점 장점 : 하나하나 살펴보는 기존 탐색에 비해 훨씬 빠르다. 단점 : 정렬이 된 상태에서만 사용할 수 있어 사용하기 까다롭다. 이분 탐색 방법 데이터 배열을 정렬해준다. 정렬된 배열에서 왼쪽 끝 인덱스 : left, 오른쪽 끝 인덱스 : right를 이용해 중앙값 : mid를 찾는다. mid와 배열에서 찾고자 하는 값(target)을 비교한다. target이 나올 때까지 아래와 같은 탐색 과정을 반복한다 mid target : right를 mid-1로 이동시켜 왼쪽 구간 탐색 (left.. 2021. 11. 26.
그리디 알고리즘 내용 정리 그리디 알고리즘 그리디 알고리즘이란? 탐욕(그리디) 알고리즘이란 현재 상황에서 가장 최선의(좋은) 선택을 고르는 알고리즘을 의미한다. 그리디 알고리즘은 현재 상황의 가장 좋은 결과를 선택하는 것으로 최종 결과에 대한 최적의 해를 구하는 것과는 다르다. 위와 같은 예시에서 가장 합이 큰 경로를 찾는다고 할 때 최종적으로 가장 최적의 해는 노란색 루트를 따라 111을 구하는 경로이다. 그러나 그리디 알고리즘은 루트에서 가장 최적의 해인 20으로, 20에서 가장 최적의 해인 41로 가는 파란색 루트를 따라간다. 현재의 상황에서 가장 큰 수를 따라 최종적으로 62의 값을 얻게 된다. 이렇게 그리디 알고리즘이 최종적으로 가장 최적의 해를 구하는 것은 아니다. 그리디 알고리즘의 조건 그렇다면 그리디 알고리즘을 사용.. 2021. 11. 23.