본문 바로가기

Wook's 개척일기234

[프로그래머스 : 레벨 3] 디스크 컨트롤러 : PriorityQueue(Java) 이번 문제는 답지를 보고 풀었다. 나혼자 해보려고 했으나 내가 모르는 부분들도 있었고 반복문의 조건식에서 어떤 조건식을 달지 몰라서 해답을 찾게 되었다. 그래도 내가 생각했던 방식이 맞긴 맞았다. 일단 문제부터 보자. 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 .. 2021. 5. 30.
[프로그래머스 : 레벨 2] 더 맵게 (feat. PriorityQueue , Java) 이번 문제는 내가 List로 문제를 풀고 나니 효율성에서 문제가 생겼다. 그래서 이걸 어떻게 해결하지 해서 일단 문제가 Heap과 관련된 문제이기도 했고 가장 작은수를 더 빠르게 구하는것이니 자바의 PrioritQueue라는 클래스를 사용하여서 문제를 풀었다. PriorityQueue를 사용하는 방법은 아래 링크에 올려놨다. https://wpioneer.tistory.com/95 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (.. 2021. 5. 28.
[Java] PriorityQueue(우선순위 큐) 설명과 사용법 Priority Queue(우선순위 큐)란? 우리가 자바에서 사용하는 큐는 FIFO 형식으로 가장 먼저 쌓인 데이터부터 추출할수 있는것으로 알고 있다. 하지만 Priority Queue는 데이터가 들어온 순서대로 나가는것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 요소들부터 나가는 구조이다. 우선순위 큐는 Heap을 사용해서 구현을 한다. 그래서 값은 완전이진트리 형태로 값이저장되고 값을 추출하게 된다. Heap과 완전 이진트리에 대한 설명은 아래 링크를 참조해보면 된다. https://wpioneer.tistory.com/94?category=1023663 그럼 Priority Queue 의 특징을 살펴보자. Priority Queue 특징 1. 높은 우선순위 요소를 먼저 꺼내서 처리하는 구조.. 2021. 5. 28.
[자료구조] 힙(Heap) 이란 힙(Heap)이란? 힙은 최대값, 최소값을 찾아내는 연산을 쉽게 하기 위해서 고안된 완전 이진트리로 구성된 자료구조 이다. (여기서 완전 이진트리란 자식 노드를 왼쪽부터 오른쪽으로 채워 넣는것을 뜻한다) Heap에는 두가지가 있다. 1. 최소 Heap 2. 최대 Heap 각각에 대해서 알아보자. 1. 최소 Heap 최소 Heap은 말 그래도 값이 작은 값을 항상 부모 노드로 올림으로써 루트에는 항상 가장 작은 값이 오도록 하는것을 뜻한다. 2. 최대 Heap 최대 Heap은 최소 Heap과는 반대로 가장 큰값을 부모노드로 계속 올림으로써 루트에는 항상 가장 큰값이 오도록 하는것을 뜻한다. 최소 Heap의 노드 삽입 과정 1. 1 삽입 2. 부모 노드와 확인후 작으면 부모노드와 변경 3. 또 부모 노드보다.. 2021. 5. 27.