문제
https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=java
문제 접근
- 초기에 저장되어 있는 위치를 기준으로 내가 원하는 문서를 잡아야 한다. 따라서 초기 상태의 인덱스와 해당 데이터의 우선순위를 하나의 클래스로 묶어 관리하면 편리하다.
- 이후에는 리스트를 순회하면서 맨 처음에 있는 요소보다 더 큰 우선순위를 가진 요소가 존재한다면 뒷쪽으로 보내고 그렇지 않다면 poll 한다. 이때 인덱스가 내가 원하는 인덱스인지 검사하면 끝이다.
import java.util.*;
class Paper{
int priority;
int location;
Paper(int priority, int location){
this.priority = priority;
this.location = location;
}
}
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
LinkedList<Paper> printer = new LinkedList<>();
for(int i = 0; i < priorities.length; i++){
printer.addLast(new Paper(priorities[i], i));
}
while(!printer.isEmpty()){
Paper paper = printer.peekFirst();
boolean canPrint = true;
for(Paper otherPaper: printer){
if(otherPaper.priority > paper.priority){
canPrint = false;
break;
}
}
if(canPrint){
if(paper.location == location){
return answer;
} else{
answer++;
printer.pollFirst();
}
} else{
printer.addLast(printer.pollFirst());
}
}
return -1;
}
}
'DataStructure > List' 카테고리의 다른 글
LinkedList/Queue의 활용 - BOJ 1158 요세푸스 문제 (0) | 2023.03.17 |
---|---|
배열의 정의와 예제 문제 (0) | 2023.03.15 |
Queue의 활용 - Programmers 기능개발 (0) | 2023.03.14 |
Queue의 활용 - BOJ 1021 회전하는 큐 (1) | 2023.03.14 |
Stack의 활용 - Programmers 같은 숫자는 싫어 (0) | 2023.03.13 |