[プログラマ]スタック/キュープリンタ/Java
13568 ワード
📝プリンタ
✔¥質問説明
一般的なプリンタでは、必要な印刷順に印刷されます.したがって、重要なドキュメントは後で印刷される可能性があります.この問題を解決するために,重要文書を先に印刷するプリンタを開発した.この新しく開発されたプリンタは、次のように印刷されます.
印刷待ちリスト
例えば、4つの文書(A、B、C、D)が印刷対象リストに順次存在し、重要度が2 1 3 2の場合、CD A Bの順に印刷される.
ソリューション関数を作成してください.パラメータが現在のキュー・リスト内のドキュメントの重要度のソート順と、印刷を要求したドキュメントが現在のキュー・リスト内にある場所を指定した場合、印刷を要求したドキュメントの何回目の印刷かを返します.
✔勘定科目の制限
勘定科目勘定科目I/Oの例
prioritieslocationreturn[2, 1, 3, 2]21[1, 1, 9, 1, 1, 1]05
勘定科目勘定科目I/Oの例説明
例1
問題の例は次のとおりです.
例2
6つの文書(A、B、C、D、E、F)は、印刷対象リストにおいて、重要度が1 1 1 1 9 1 1 1 1であり、C D E F A Bの順に印刷される.
👩🏻💻 풀이
🎨キュー
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
Queue<Pair> queue = new LinkedList<>();
int answer = 0;
for (int i = 0; i < priorities.length; i++) {
queue.add(new Pair(i, priorities[i]));
}
while (!queue.isEmpty()) {
int current = queue.peek().value;
boolean flag = false;
for (Pair pair : queue) {
if (pair.value > current) {
flag = true;
break;
}
}
if (flag) {
Pair temp = queue.poll();
queue.add(temp);
}
else {
answer++;
Pair pair = queue.poll();
if (pair.index == location) {
return answer;
}
}
}
return answer;
}
class Pair {
int index;
int value;
public Pair(int index, int value) {
this.index = index;
this.value = value;
}
}
}
🎨우선순위 큐
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for (int p : priorities) {
pq.offer(p);
System.out.println(pq);
}
while (!pq.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
if (priorities[i] == pq.peek()) {
if (i == location) {
return answer;
}
pq.poll();
answer++;
}
}
}
return answer;
}
}
Reference
この問題について([プログラマ]スタック/キュープリンタ/Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@sennys2/프로그래머스스택큐.프린터-Java
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
Queue<Pair> queue = new LinkedList<>();
int answer = 0;
for (int i = 0; i < priorities.length; i++) {
queue.add(new Pair(i, priorities[i]));
}
while (!queue.isEmpty()) {
int current = queue.peek().value;
boolean flag = false;
for (Pair pair : queue) {
if (pair.value > current) {
flag = true;
break;
}
}
if (flag) {
Pair temp = queue.poll();
queue.add(temp);
}
else {
answer++;
Pair pair = queue.poll();
if (pair.index == location) {
return answer;
}
}
}
return answer;
}
class Pair {
int index;
int value;
public Pair(int index, int value) {
this.index = index;
this.value = value;
}
}
}
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for (int p : priorities) {
pq.offer(p);
System.out.println(pq);
}
while (!pq.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
if (priorities[i] == pq.peek()) {
if (i == location) {
return answer;
}
pq.poll();
answer++;
}
}
}
return answer;
}
}
Reference
この問題について([プログラマ]スタック/キュープリンタ/Java), 我々は、より多くの情報をここで見つけました https://velog.io/@sennys2/프로그래머스스택큐.프린터-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol