[programmers] 기능개발

KwonSC·2022년 3월 1일
0

programmers - Java

목록 보기
5/17
post-thumbnail

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


Code

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        List<Integer> list = new ArrayList<>();
        int max = ((int)Math.ceil((100.0 - progresses[0]) / speeds[0]));
        int remain = 1;
        for (int i = 1; i < speeds.length; i++) {
            int temp = ((int)Math.ceil((100.0 - progresses[i]) / speeds[i]));
            if (temp > max) {
                list.add(remain);
                remain = 1;
                max = temp;
            }
            else {
                remain++;
            }
        }
        list.add(remain);
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}

Solution

스택/큐 유형이어서 처음에는 어떻게 이걸 스택이나 큐로 풀어야하나 했지만 다른사람의 코드를 보니 대단한 알고리즘은 아니어서 평범하게 풀어도 상관없는것같다.
배열을 돌면서 temp을 계산하고 max와 비교해 작으면 remain을 더하고(추가된 기능 개수) 크면 list에 넣고 remain을 초기화한다. 마지막에 남은 remainlist에 넣고 int배열로 전환후 리턴

0개의 댓글