CS/Algorithm

[Programmers][JAVA] 기능개발

별토끼. 2019. 10. 13. 17:11
반응형
문제

 프로그래머스 42586번 기능개발

풀이

 처음에 while문으로 하루하루 늘리면서 구현을 했더니 시간초과가 났습니다. 그래서 몫과 나머지를 이용해 걸리는 날짜를 먼저 계산한 뒤 날짜 기준값을 정하고 기준값보다 작으면 count변수를 늘리고 그렇지 않을 경우 res값에 count변수를 넣어주는 방식으로 문제를 풀었습니다.

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.*;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = {};
        boolean[] visited = new boolean[progresses.length];
        ArrayList<Integer> res = new ArrayList<>();
        int len = progresses.length;
        for(int i=0;i<len;i++){
            int d = (100-progresses[i])/speeds[i];
            int p = (100-progresses[i])%speeds[i];
            if(p!=0) p = 1;
            progresses[i] = d+p;
        }
        for(int i=0;i<len;i++){
            System.out.println(progresses[i]);
        }          
        
        int day = progresses[0];
        int cnt = 1;
        for(int i=1;i<progresses.length;i++){
            if(progresses[i]<=day){
                cnt++;
            }else{
                res.add(cnt);
                day = progresses[i];
                cnt=1;
            }
        }
        res.add(cnt);
        for(int i=0;i<res.size();i++){
            System.out.println(res.get(i));
        }        
        answer = new int[res.size()];
        for(int i=0;i<answer.length;i++){
            answer[i] = res.get(i);
            //System.out.println(answer[i]);
        }
        return answer;
    }
}
cs
반응형