Algorithm/Data Structure
-
[Binary min Heap(c++)] BOJ 15942 Thinking heapAlgorithm/Data Structure 2023. 2. 20. 12:03
문제 입력 첫 번째 줄에 자연수 N(1 ≤ N ≤ 200,000)이 주어진다. 두 번째 줄에 자연수 k와 p(1 ≤ k, p ≤ N)가 공백으로 구분되어 주어진다. 출력 자연수 k가 heap 배열의 p번째에 위치하도록 하는 삽입 순서가 존재한다면 i번째 줄에 i번째로 삽입할 수를 출력한다. 가능한 삽입 순서가 여러 가지라면 그중 아무거나 하나를 출력해도 된다. 만약 그렇게 만드는 삽입 순서가 존재하지 않는다면 첫 번째 줄에 -1을 출력한다. 풀이 방법 자료 구조 문제에 나와있는 것 처럼 1based의 1차원 배열을 통해 구현하면 된다. heap[p] = k 임을 출력해야하므로 heap[p] = k를 넣고 다음 단계로 나아가면 된다. 그 다음 단계를 살펴 보자. 1. k의 부모(조상)은 k보다 작은 수여야..
-
[Algorithm/ Priority Queue(우선순위 큐)/Heap(힙) (C++)] BOJ 1927 최소힙Algorithm/Data Structure 2023. 2. 18. 18:49
Priority Queue(우선순위 큐) 💡기본 Queue의 자료 구조는 FIFO(First in First out, 선입 선출)구조이다. 그에 반헤 Priority Queue는 설정된 우선순위에 따라, Top을 유지하고 먼저 Out(pop)된다. 사용 방법 queue를 import하여 사용한다. [멤버 함수] - queue에선 front를 사용해서 가장 앞에 있는 변수를 확인하는 것에 비해, priority_queue에서는 top을 활용하여 확인한다. - push : priorityqueuq에 값을 삽입한다. - emplace : priority queue에 구조를 삽입한다. push와 emplace의 차이 push의 경우 단순히 queue에 값을 넣어준다. 다시 말하면 오브젝트로 제작후 삽입해야하므로..