https://school.programmers.co.kr/learn/courses/30/lessons/42586
풀이
import java.io.*;
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
for(int i = 0; i < progresses.length; i++) {
int leftProgress = (100 - progresses[i]);
progresses[i] = leftProgress/speeds[i];
if(leftProgress%speeds[i] != 0) {
progresses[i]++;
}
}
ArrayList<Integer> list = new ArrayList<>();
int count = 1;
int maxTime = progresses[0];
for(int i = 1; i < progresses.length; i++) {
if(progresses[i] <= maxTime) {
count++;
}else{
maxTime = progresses[i];
list.add(count);
count = 1;
}
}
if(maxTime >= progresses[progresses.length - 1]){
list.add(count);
}
int[] answer = new int[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
먼저 남은 작업 일자를 구하기 위해 100에서 진행율을 뺀 뒤에 속도로 나눈다.
다만 나머지가 있는 경우 1일을 더 생각해야되기 때문에 나머지 계산도 진행한다.
이후 최고 작업 시간과 비교하여 list에 추가해준다.
마지막으로 배열의 마지막 위치는 값이 들어가지 않을 수 있기 때문에 이에 대한 비교까지 마친 후에 answer 배열을 완성한다.
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로세스(JAVA) (0) | 2024.04.25 |
---|---|
[프로그래머스] 올바른 괄호(JAVA) (0) | 2024.04.24 |
[프로그래머스] 같은 숫자는 싫어(JAVA) (0) | 2024.04.24 |
[프로그래머스] 의상(JAVA) (0) | 2024.04.23 |
[프로그래머스] 전화번호 목록(JAVA) (0) | 2024.04.23 |