알고리즘(2)
-
요소들을 그룹 지어서 개수 세기
배열에 같은 수들을 그룹지어서 개수를 세는 과정 int num[LENGTH] = { 2,2,7,7,7,7,5,7,7 }; int groupCount = 0; for (int i = 0; i < LENGTH; i++) { if (i == 0 || num[i] != num[i-1]) { groupCount++; } } index가 0이면 음수 index가 나오므로 예외처리 i+1을 확인하는 것보다 i -1 보는 것이 더 깔끔하고 확인이 쉽다. i+1이라면 마지막 값을 예외처리 해주어야함
2023.08.22 -
heap
heap은 우선순위 큐 같은 곳에서 최대값이나 최솟값을 빠르게 찾아낼 때 쓰이는 알고리즘이다. 자료구조는 트리를 이용한다. max-heap은 최댓값이 무엇인지만 알 수 있고 나머지 값들은 어떤지 모른다. heap을 만들 때 heapify라는 과정을 거친다. 이 수를 heap 정렬을 이용하게 되면 이걸로 트리를 만들어본다. 트리는 배열 및 리스트로 구현이 가능하다. 배열로 구현할 시에는 맨 위의 root는 0이 되고 왼쪽 자식 노드는 0 * 2 + 1로 오른쪽 자식 노드는 0 * 2 + 2로 접근하게 된다. 가장 큰 노드가 맨 위로 오게 하는 것이 max heap의 목적이다. 그러므로 root와 왼쪽, 오른쪽을 비교하고 만약 자식이 더 크다면 현재의 노드와 자식 노드의 값과 교환한다. 그리고 가장 큰 곳의..
2023.05.07