자바/코딩테스트
[프로그래머스] 기능개발 - Java(자바)
대전집주인
2024. 3. 26. 14:46
728x90
SMALL
문제 이해
- 진도가 100%가 되는 경우 배포가 되는데 앞의 기능이 끝나기 전까지 뒤의 기능은 배포를 할 수가 없다.
- 뒤의 기능이 앞의 기능의 배포일보다 적다면 앞의 기능 배포날에 같이 배포 된다.
- 개발속도에 따른 각 기능의 배포일을 구해 배열에 담는다.
- 배포일을 두개씩 비교하는데 맨 처음에 나온 값을 first 변수에 넣고 본인보다 큰 값이 나오기전까지 cnt를 증가 시킨다.
- 큰 값이 나오면 이전에 쌓인 cnt를 리스트에 담고 cnt를 초기화 새로운 값이 first 변수에 담긴다.
- 마지막 기능 값이 나오면 그동안 쌓인 cnt를 집어 넣는다.
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
int[] mod = new int[progresses.length];
List<Integer> list = new ArrayList<>();
for(int i = 0; i<progresses.length; i++){
mod[i] = (int)Math.ceil((100.0-progresses[i])/speeds[i]);
}
int cnt = 1;
int first = mod[0];
for(int i = 1; i<mod.length; i++){
if(first >= mod[i]){
cnt++;
}else{
list.add(cnt);
first = mod[i];
cnt = 1;
}
if(mod.length-1 == i){
list.add(cnt);
}
}
answer = new int[list.size()];
for(int i =0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
728x90
LIST