https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
📌 Problem
📝 Solution
package Study0220;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class queue {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
for(int i=0;i<x;i++) {
int n = sc.nextInt(); //전체 개수
int m = sc.nextInt(); //몇번째에 놓여있는지
Queue<int[]> queue = new LinkedList<>();
for(int j =0;j<n;j++) {
int p = sc.nextInt();
queue.add(new int[]{j,p});
}
int count =0;
while(true) {
int now[] = queue.remove();
boolean flag=true;
for(int q[]:queue) {
if(q[1]>now[1]) { //우선순위
flag=false;
break;
}
}
if(flag) {
count = count+1;
if(now[0]==m) {
System.out.println(count); //결과
break;
}
}else {
queue.add(now);
}
}
}
}
}
-풀이방법
1. 맨 앞 queue를 제거한다
2 . 맨 앞 queue와 나머지 queue의 중요도를 비교하여 나머지 queue중에서 중요도 높은 값이 나왔을 경우
가장 맨 뒤에 배치한다.
3. 맨 앞 중요도가 가장 높을 경우 바로 인쇄를 한다. (이 때 count를 해준다)
4. 찾고자 하는 문서를 만났을 경우 count를 출력해 준다.
'Programming > algorism' 카테고리의 다른 글
그룹 애너그램 (쓰면서 익히는 알고리즘 자료구조 p.143) (0) | 2021.11.21 |
---|---|
배열의 회전 (쓰면서 익히는 알고리즘 자료구조 p.91) (0) | 2021.11.07 |
파스칼의 삼각형 (쓰면서 익히는 알고리즘 자료구조) (0) | 2021.10.31 |
배열에서 삽입 위치 찾기 (쓰면서 익히는 알고리즘 자료구조) (0) | 2021.10.23 |