https://programmers.co.kr/learn/courses/30/lessons/42586
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> queue = new LinkedList<Integer>();
// 100까지 되기까지 걸리는 각 인덱스작업 시간
// (100 - 진도율)/개발속도 = 작업시간
// 나누고 무조건 올림처리를 해주어야 함(개발속도가 95%이면 (100-95)/4 = 1.2)
for(int i=0; i<progresses.length; i++){
queue.offer((int)Math.ceil((double)(100-progresses[i])/speeds[i]));
}
// 현재 인덱스보다 더 작은 크기의 인덱스를 비교한뒤에 list에 추가하기
// 현재 인덱스의 값보다 더 작다면 ++ 해야 함
List<Integer> list = new ArrayList<Integer>();
int current = queue.poll(); // 제일 처음 수(다음 인덱스와 비교하려는 값)
int cnt = 1; // 제일 처음 수를 더해주기
while(!queue.isEmpty()) { // queue에 값이 없을때까지 while문 실행
int next = queue.poll(); // 그 다음 인덱스를 비교
if(current >= next) { // 현재인덱스의 값이 다음인덱스의 값보다 크면
cnt ++; // cnt에 더해주기
}else { // 현재인덱스의 값보다 다음인덱스의 값이 크다면
current = next; // 다시 비교하기 위해 다음 인덱스를 현재 인덱스로
list.add(cnt); // list에 return 값을 주고
cnt = 1; // 다시 비교하기 위해 cnt를 1로
}
}
list.add(cnt);
int[] answer = new int[list.size()]; // answer[]에다가 list의 원소를 넣어주기
for(int i=0; i<list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
'algorithm > Programmers' 카테고리의 다른 글
[JAVA] 프로그래머스 자연수 뒤집어 배열로 만들기 (0) | 2022.09.28 |
---|---|
[JAVA] 프로그래머스 정수 제곱근 판별 (0) | 2022.09.28 |
[JAVA] 자릿수 더하기 (0) | 2022.09.24 |
스택/큐 프린터 (0) | 2022.02.14 |
완전탐색 - 모의고사 (0) | 2022.02.08 |