출처 : https://programmers.co.kr/learn/courses/30/lessons/42586?language=java
ㅎ ㅏ............ 너무 어렵습니다 -_-;;;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
if(progresses == null || speeds == null) return answer;
Queue<Integer> s = new LinkedList<>();
//System.out.println((100 -95) /4);
for(int i = 0 ; i < progresses.length ; i++) {
s.add((int)Math.ceil((100 - progresses[i]) / (double)speeds[i]));
}
System.out.println(s);
Stack<Integer> rst = new Stack<>();
Stack<Integer> tmp = new Stack<>();
tmp.setSize(1);
int sum = 0 ;
while(true) {
int cur = s.poll();
if(rst.size() == 0) {
sum++;
tmp.add(cur);
rst.add(sum);
continue;
}
int prev = tmp.pop();
if(prev >= cur) {
tmp.add(prev);
int v = rst.pop();
rst.add(++v);
} else {
tmp.add(cur);
rst.add(1);
}
if(s.isEmpty())
break;
}
return rst.stream().mapToInt(i->i).toArray();
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 현재 TimeStamp 값 얻기 예제 (0) | 2021.08.23 |
---|---|
MultipartHttpServletRequest 를 통한 업로드 된 multipart/form-data 파일 ContentType 확인 [MIME Type] (0) | 2021.08.17 |
코딩테스트 연습 -> 스택/큐 ->프린터 (0) | 2021.08.13 |
코딩테스트 ->연습문제->최솟값 만들기 (0) | 2021.08.08 |
코딩테스트연습->완전탐색->모의고사 (0) | 2021.08.07 |