2022/02/15 2

[자료구조] 우선순위 큐와 힙

우선순위 큐란, 기존 큐 방식인 FIFO 방식과 함께 우선순위를 정하여 해당 방향으로 정렬을 하는 큐라고 생각하시면 됩니다. 우선순위를 어떻게 지정하냐에 따라서 큐가 바뀝니다. 우선순위 큐는 대부분은 힙을 이용하여 구현합니다. 힙은 완전이진 트리 형태의 자료구조입니다. 여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠르다는 장점이 있습니다. 그리고 이진 탐색 트리(BST)와 달리 중복 값을 허용합니다. 힙의 종류는 2가지 정도가 있는 데, 최대 힙(Max Heap)과 최소 힙(Min Heap)이 있습니다. 이 둘을 판단하는 기준은 아주 단순합니다. 부모 노드 ≥ 자식 노드 (즉, 부모 노드의 key 값이 자식 노드보다 크거나 같은 완전 이진트리) 라면, 최대 힙입니다. 그 반대라면 최소 힙입니다..

[프로그래머스] 프린터

※ 해당 문제의 링크는 여기입니다. ※ 다른 분들이 푸신 방법이 더 좋을 수도 있지만 제가 생각해낸 방법으로 포스팅하도록 하겠습니다. (대부분 Inner Class, Queue 둘 중 하나, 혹은 둘 다 사용하셔서 푸셨습니다. 저 같은 경우에는 Queue만 사용하여 해결했습니다.) 제한사항 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냄 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣음 그렇지 않으면 J를 인쇄 알고리즘 문제를 파악함에 있어 제가 가장 중요하게 확인한 점은 값이 같더라도 위치를 정확하게 파악하는 것이었습니다. 그리고 해당 값을 인쇄, 즉 사라지게 된 후에는 다시 제한사항을 반복한다는 점이었습니다. 그래서 개인적으로 ..