본문 바로가기
알고리즘

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

by irerin07 2019. 4. 15.
728x90

나의 풀이

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
       int[] answer = {};
        int[] daysrequired = { progresses.length };
        Stack st = new Stack();
        Queue<Integer> q = new LinkedList<>();
        for (int i = 0; i < progresses.length; i++) {
            q.add((100 - progresses[i]) / speeds[i]);
        }

        int cnt = 1;
        int minday = q.poll();
        List<Integer> list = new ArrayList<>();
        while (!q.isEmpty()) {
            int num = q.poll();
            if(num <= minday) {
                cnt++;
            }else {
                list.add(cnt);
                cnt=1;
                minday = num;
            }
        }
        list.add(cnt);
        answer = new int[list.size()];
        for(int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }

        return answer;
    }
}

다른 사람의 풀이

import java.util.ArrayList;
import java.util.Arrays;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] dayOfend = new int[100];
        int day = -1;
        for(int i=0; i<progresses.length; i++) {
            while(progresses[i] + (day*speeds[i]) < 100) {
                day++;
            }
            dayOfend[day]++;
        }
        return Arrays.stream(dayOfend).filter(i -> i!=0).toArray();
    }
}
728x90