https://school.programmers.co.kr/learn/courses/30/lessons/42587
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
char ask = 'A'; // 내가 요청한 문서 이름 변수
// 중요도 큐 , 문서 이름 큐 선언
Queue<Integer> printer = new LinkedList<>();
Queue<Character> name = new LinkedList<>();
// 중요도 배열 값을 큐에 저장
// 문서 이름은 A 부터 하나씩 늘려가며 저장
for(int i=0; i<priorities.length; i++){
printer.offer(priorities[i]);
name.offer((char)(65+i));
// 만약 i의 값이 내가 요청한 문서 이름의 위치와 같다면
if(i==location) {
ask = (char)(65+i); // 변수 값에 내가 요청한 문서 이름 저장
}
}
while(true){
boolean dap = true;
// 두 개의 큐 맨 앞의 값을 꺼내오기
int ans = printer.poll();
char ans2 = name.poll();
for(int i : printer){
// 만약 뒤에 ans 값보다 큰 값이 있다면
// 인쇄 못함
if(ans < i){
dap = false;
break;
}
}
if(dap == false){ // 인쇄를 못하니까 다시 넣어줌
printer.offer(ans);
name.offer(ans2);
} else { // 인쇄를 할 수 있다면
answer++; // 인쇄 했다고 알림
// 만약 인쇄한 문서의 이름이 내가 요청 이름과 같다면
if(ans2 == ask){
return answer;
}
}
}
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Level2] 스킬트리 / 2022.07.11 (0) | 2022.07.11 |
---|---|
[프로그래머스 - Level1] 문자열 내 p와 y의 개수 / 2022.07.11 (0) | 2022.07.11 |
[프로그래머스 - Level2] 전화번호 목록 / 2022.07.11 (0) | 2022.07.11 |
[프로그래머스 - Level2] 기능개발 / 2022.07.09 (0) | 2022.07.09 |
[프로그래머스 - Level1] 같은 숫자는 싫어 / 2022.07.04 (0) | 2022.07.04 |