import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Queue;
public class Printer {
public int solution(int[] priorities, int location) {
int q_element, order = 0;
Queue<Integer> queue = new LinkedList<>();
LinkedList<Integer> list = new LinkedList<>();
LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>();
for (int i = 0; i < priorities.length; i++) {
list.add(priorities[i]);
map.put(i, priorities[i]);
queue.offer(i);
}
Collections.sort(list);
while (!queue.isEmpty()) {
q_element = queue.poll();
if (map.get(q_element) == list.get(list.size() - 1)) {
order++;
if (q_element == location) {
break;
}
list.remove(list.size() - 1);
} else {
queue.offer(q_element);
}
}
return order;
}
public int solution1(int[] priorities, int location) {
int answer = 0;
Queue<Integer> queue = new LinkedList<>();
LinkedList<Integer> list = new LinkedList<>();
for (int i = 0; i < priorities.length; i++) {
list.add(priorities[i]);
queue.offer(i);
}
Collections.sort(list);
while (!queue.isEmpty()) {
int ele = queue.poll();
if (priorities[ele] == list.get(list.size() - 1)) {
answer++;
if (location == ele) {
break;
}
list.remove(list.size() - 1);
} else {
queue.offer(ele);
}
}
return answer;
}
public static void main(String[] args) {
Printer s = new Printer();
int[] arr1 = { 2, 1, 3, 2 };
int[] arr2 = { 1, 1, 9, 1, 1, 1 };
System.out.println(s.solution(arr1, 2));
System.out.println(s.solution(arr2, 0));
}
}
- ArrayList는 원소를 삭제하면 인덱스가 계속 밀리므로 LinkedList보다 느리다.