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

Yujin·2025년 6월 18일

CodingTest

목록 보기
9/51

문제

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

문제풀이 방법

앞보다 뒤에 있는 기능이 먼저 개발 가능 -> 배포 순서는 앞이 되어야 뒤가 가능
progressess[] : 배포되어야 하는 순서 / speeds[] : 개발 속도


if(100-progresses[i] % speeds[i] != 0) -> 100-progresses[i] / speeds[i] + 1
 release[7, 3, 9] -> max = 7, 
        if(max >= release[i]) cnt++
            else answer[i] = cnt
 release[5,10,1,1,20,1] => [1,3,2] : 3
 for(int i = 0; i < relase.length; i++) release[i] = release[i+1] -> cnt ++

나의 코드


import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = new int[100];
        int[] release = new int[progresses.length];
        for(int i = 0; i < progresses.length; i++){
            if((100-progresses[i]) % speeds[i] != 0 ){
                release[i] = ((100-progresses[i]) / speeds[i]) + 1;
            }else {
                release[i] = ((100-progresses[i]) / speeds[i]);
            
            }  
        }
        //release[] : 개발 까지 남은 날
        int max = release[0];
        int cnt = 1;
        int index = 0;
 
        for(int i = 1; i < release.length; i++){
            if(max >= release[i]){
                cnt++;
            } else {
                max = release[i];
                answer[index] = cnt;
                index++;
                cnt = 1;
            }
        }
        answer[index] = cnt;
        return Arrays.copyOfRange(answer, 0, index + 1 );
    }
}

0개의 댓글