본문 바로가기
알고리즘/프로그래머스

[프로그래머스 Lv2] 기능개발(Java)

by justkeepgoing 2021. 1. 6.
728x90
반응형

1. 문제

programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

2. 풀이

  • 작업기간을 소수점 올림하지 않으면 틀리는 문제였다.

3. 코드

import java.util.*;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        List<Integer> list = new ArrayList<>();
        List<Integer> result = new ArrayList<>();
        for(int i =0; i<progresses.length; i++){
            list.add( (int)Math.ceil((100-progresses[i])/(double)speeds[i])); // 올림효과가 있어야함
        }


        int cnt=1;
        int idx =0;
        while(!list.isEmpty()){
            if(list.size()==1){
                result.add(list.get(idx));  // 배열 하나일때의 예외처리 필요
                break;
            }
            if(list.get(idx)>= list.get(idx+1)){
                list.remove(idx+1);
                cnt++;
            }else{
                idx++;
                result.add(cnt);
                cnt=1;
            }
            if(list.size()-1 == result.size()){
                result.add(cnt);
                break;
            }
        }


        int[] answer = new int[result.size()];
        for(int i =0; i<result.size(); i++){
            answer[i] = result.get(i);
        //    System.out.println(result.get(i));
        }

        return answer;
    }
}
반응형

 

반응형