출처 : 코딩테스트 연습 - 프린터 | 프로그래머스 (programmers.co.kr)
흑 ㅠㅠ 저는 많이 공부해야겠네요 -0-;;;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
class Solution {
public static int solution(int[] priorities, int location) {
//int answer = 0;
LinkedList<Ctx> arr = new LinkedList<>();
Stack<Ctx> s = new Stack<>();
//Queue<Ctx> q = new LinkedList<>();
int idx = 0;
Ctx ctx = null;
for(int i : priorities) {
ctx = new Ctx();
ctx.a = idx;
ctx.b = i;
arr.add(ctx);
idx++;
}
// 1. MAX 값을 구하도록 한다.
Ctx maxCtx = null;
// if(maxCtx.a == 0 ) return location + 1;
//System.out.println(arr);
idx = 0;
while(!arr.isEmpty()) {
maxCtx = arr.stream().max((a,b) -> Integer.compare(a.b , b.b)).orElse(new Ctx());
for(int i = 0 ; i < arr.size() ; i++) {
if(arr.peek().b < maxCtx.b) {
Ctx tmp = arr.pollFirst();
arr.offerLast(tmp);
}
// System.out.println(String.format("arr%d=%s",idx,arr));
}
// System.out.println(String.format("s%d=%s",idx,arr));
if(!arr.isEmpty()) s.push(arr.pollFirst());
idx++;
}
//System.out.println(s);
return s.indexOf(s.stream().filter(a -> a.a == location).findFirst().get()) + 1;
}
public static class Ctx {
public Integer a;
public Integer b;
@Override
public String toString() {
return String.format("%d %d\n", a,b);
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 현재 TimeStamp 값 얻기 예제 (0) | 2021.08.23 |
---|---|
MultipartHttpServletRequest 를 통한 업로드 된 multipart/form-data 파일 ContentType 확인 [MIME Type] (0) | 2021.08.17 |
코딩테스트 연습->스택큐->기능개발 (0) | 2021.08.09 |
코딩테스트 ->연습문제->최솟값 만들기 (0) | 2021.08.08 |
코딩테스트연습->완전탐색->모의고사 (0) | 2021.08.07 |