이미지를 클릭하시면 문제 링크로 연결됩니다.
import java.util.*;
// 2일차 (큐) - 프로그래머스 기능 개발
public class day02Prog42586 {
public static int[] solution(int[] progresses, int[] speeds) {
int[] days = new int[progresses.length];
// 배포까지 남은 일수를 days 배열에 넣어준다.
for (int i = 0; i < days.length; i++) {
if((100 - progresses[i]) % speeds[i] == 0){
days[i] = (100 - progresses[i]) / speeds[i];
} else {
days[i] = (100 - progresses[i]) / speeds[i] + 1;
}
} // days = {7, 3, 9} days = {5, 10, 1, 1, 20, 1}
ArrayList<Integer> list = new ArrayList<>();
int x = days[0]; // 첫 번째 작업의 잔여일수
int cnt = 1;
for (int i = 1; i < progresses.length; i++) {
if(x >= days[i]){
cnt++;
} else {
list.add(cnt); // 배포되는 작업의 개수를 배열에 저장
cnt = 1; // 초기화
x = days[i]; // i-1 번째 작업의 잔여일수
}
}
list.add(cnt);
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
System.out.println(Arrays.toString(answer));
return answer;
}
public static void main(String[] args) {
int[] prog1 = {93, 30, 55};
int[] spds1 = {1, 30, 5};
solution(prog1, spds1);
int[] prog2 = {95, 90, 99, 99, 80, 99};
int[] spds2 = {1, 1, 1, 1, 1, 1};
solution(prog2, spds2);
}
}