[プログラマー]もっと辛い
1773 ワード
こんにちは。
MINDOLです
今日の問題は、優先キューを使用する問題です.
優先順位キューを使用しないで実装できますが、効率テストでエラーが発生します.
(優先順位キューがよくわかりませんが、効率テストで2時間考えました...)
優先順位列がわからない場合は、タイトルのように辛い質問です.
では、直接問題を見てみましょう.
質問リンク
もっと辛い
すべての食べ物のスコヴェル指数をK以上にするために、規定の方法で食べ物を使用します.また、書き込み回数を返さなければなりません.
ただし、Kより大きい値に一致しない場合は、-1を返します.
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int cnt = 0; // 횟수 변수
int mix = 0; // 섞인 음식
PriorityQueue<Integer> heap = new PriorityQueue<Integer>();
for (int i=0; i < scoville.length; i++) // 힙에 값 대입
heap.add(scoville[i]);
for (int x, y; heap.size() > 1;) { // 요소는 한개는 남깁니다.
x = heap.poll();
if (x >= K) // 최소값이 K이상이면 멈춤
break;
y = heap.poll();
mix = x + (y * 2);
heap.add(mix); // 섞어서 다시 넣음
cnt++; // 횟수 카운트
}
if (heap.poll() < K) // 마지막으로 뽑은 요소가 K미만이면
return (-1);
return (cnt);
}
}
繰り返し文の終了後に要素を選択した場合、値がKより大きい場合、cntでカウントされた値が返されます.しかし、Kより低い場合、すべての食品が混合された後、Kを超えないため、−1に戻る.
優先キューというデータ構造を理解していない場合は、この問題を解決するのは難しいです.
この問題で優先順位キューを習得しました:)
では.
皆さん、こんにちは
Reference
この問題について([プログラマー]もっと辛い), 我々は、より多くの情報をここで見つけました
https://velog.io/@minskim2/프로그래머스-더-맵게
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([プログラマー]もっと辛い), 我々は、より多くの情報をここで見つけました https://velog.io/@minskim2/프로그래머스-더-맵게テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol