알고리즘/알고리즘 지식 2

자료구조: PriorityQueue(Heap)

Heap의 원리를 응용한 PriorityQueue에 대해 알아봅시다. PriorityQueue에서 Queue를 보고 "그 FIFO(First In First Out)의 큐랑 비슷한건가?" 라고 생각하시기 쉬운데 아닙니다. PQ 는 우선순위를 먼저 결정하고 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조입니다. 데이터를 삽입할 때 우선순위를 기준으로 최대힙 혹은 최소 힙을 구성하고 데이터를 꺼낼 때 루트 노드를 얻어낸 뒤 루트 노드를 삭제할 때는 빈 루트 노드 위치에 맨 마지막 노드를 삽입한 후 아래로 내려가면서 적절한 자리를 찾아서 옮기는 방식으로 진행됩니다. 말로만 설명하니 무슨소리인가 싶으니 그림을 가져오겠습니다. 예시로, PQ로 된, [2,3,5,7,9,10] 이 있다고 가정하고 생성하겠습니다. 보..

재귀함수와 스택 (자료구조)의 작동원리

DFS (깊이우선 탐색) 문제를 풀다보면, 재귀함수와 스택을사용해 문제를 많이 풀게됩니다. 그렇다면, 재귀함수와 스택의 차이점은 무엇일까?? 결론부터 말하자면 둘다 결과물은 같습니다. 하지만 돌아가는 방식이 조금 다를뿐이죠 재귀함수의 작동원리 먼저 재귀함수란, 자기 자신을 호출하는겁니다. Alg함수안에 Alg함수를 무한으로 호출하는것이죠. 무한으로 호출하기때문에 반드시, 탈출 조건을 쓰셔야합니다. 재귀함수는 먼저들어온 함수의 명령을 실행하기에, 맨 앞번호부터 수직탐색을합니다 1 2 3 4 5 6 7 public void Algorism (int a){ if(a==0) return 0; . . . return Algorism(a-1); } cs 이렇게 말이죠 맨 앞에있는것부터 수직 탐색합니다. 만약 푸는 ..