import java.util.*;
/**
* https://programmers.co.kr/learn/courses/30/lessons/42586
*/
public class 기능개발 {
public static void main(String[] args) {
solution(new int[]{1,2,3}, new int[]{100,100,100});
solution(new int[]{93, 30, 55}, new int[]{1, 30, 5});
solution(new int[]{95, 90, 99, 99, 80, 99}, new int[]{1, 1, 1, 1, 1, 1});
}
public static int[] solution(int[] progresses, int[] speeds) {
int period; // 첫번째 배포일
List<Integer> arr = new ArrayList<>();
List<Integer> result = new ArrayList<>();
for(int i=0, len = progresses.length; i<len; i++){
if(len == 1) return new int[]{1};
period = (int) Math.ceil((double)(100 - progresses[i]) / (double)speeds[i]);
result.add(period);
}
System.out.println(result.toString());
int cnt = 1; // 완료 작업 수
int days = result.get(0); // 지나간 날짜 수
for(int i=1, end = result.size();i<end;i++){
if(days < result.get(i)){
arr.add(cnt);
days = result.get(i);
cnt = 1;
}else if(days == result.get(i)){
cnt++;
} else{
cnt++;
}
if(i == end-1){
arr.add(cnt);
}
}
int[] realResult = new int[arr.size()];
for(int i=0;i<realResult.length;i++){
realResult[i] = arr.get(i);
}
System.out.println(Arrays.toString(realResult));
return realResult;
}
}
이것도 다시 한 번 봐야하는데...........
dirty dirty.... 주르륵
언젠가 풀이 시간이 짧아지는 그 날을 기대하며.....ㅠ
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[ 프로그래머스 : 정렬 ] 가장 큰 수 (0) | 2020.11.09 |
---|---|
[ 프로그래머스 : 스택/큐 ] 다리를 지나는 트럭 (0) | 2020.10.23 |
[Summer/Winter Coding(~2018)] 예산 - JAVA (0) | 2020.07.30 |
[2020카카오인턴십] 키패드 누르기 - JAVA (0) | 2020.07.29 |
에라토스테네스의 체를 이용한 소수 구하기 알고리즘 java (1) | 2019.10.24 |