본문 바로가기

코딩일기/알고리즘75

[프로그래머스 : 레벨 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.
[자료구조] 힙(Heap) 이란 힙(Heap)이란? 힙은 최대값, 최소값을 찾아내는 연산을 쉽게 하기 위해서 고안된 완전 이진트리로 구성된 자료구조 이다. (여기서 완전 이진트리란 자식 노드를 왼쪽부터 오른쪽으로 채워 넣는것을 뜻한다) Heap에는 두가지가 있다. 1. 최소 Heap 2. 최대 Heap 각각에 대해서 알아보자. 1. 최소 Heap 최소 Heap은 말 그래도 값이 작은 값을 항상 부모 노드로 올림으로써 루트에는 항상 가장 작은 값이 오도록 하는것을 뜻한다. 2. 최대 Heap 최대 Heap은 최소 Heap과는 반대로 가장 큰값을 부모노드로 계속 올림으로써 루트에는 항상 가장 큰값이 오도록 하는것을 뜻한다. 최소 Heap의 노드 삽입 과정 1. 1 삽입 2. 부모 노드와 확인후 작으면 부모노드와 변경 3. 또 부모 노드보다.. 2021. 5. 27.
[프로그래머스 : 레벨2] 주식가격 (Java) 이번 문제는 솔직히 너무 쉬웠다. 굳이 Queue를 사용할 필요도 없었고 금방 끝냈던거같다. 근데 문제를 이해하는데 조금 걸렸다. 그럼 이제 문제를 한번 보자. 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 .. 2021. 5. 27.