[PGS] 42586. 기능개발

레몬커드요거트·2026년 4월 22일

코딩테스트준비

목록 보기
53/66
post-thumbnail
function solution(progresses, speeds) {
    
    const needDay = []
    for(let i=0; i<progresses.length; i++){
        let day = Math.ceil((100 - progresses[i]) / speeds[i]);
        needDay.push(day)
    }
    
    let answer = []
    let deployDay = 0; // 배포된 날짜
    let lastDay = 0;
    let jobCompleted = 0;

    for(let i=0; i<needDay.length;i++){
        // 배포 날짜 >= 필요 날짜: jobCompleted++
        if(deployDay >= needDay[i]){
            jobCompleted++;
        }else{
            // 배포날짜 < 필요날짜: answer에 jobCompleted 넣기
            // 맨 처음의 경우 때문에
            deployDay = needDay[i];
            
            if(jobCompleted === 0){
                jobCompleted++;
            }else if(jobCompleted > 0){
                answer.push(jobCompleted);
                jobCompleted = 1;
            }
        }
    }
    answer.push(jobCompleted);
    return answer;
}
progressesspeedsreturn
[93, 30, 55][1, 30, 5][2, 1]
[95, 90, 99, 99, 80, 99][1, 1, 1, 1, 1, 1][1, 3, 2]

작업이 필요한 날짜:

console.log(needDay)

// 입출력1: [ 7, 3, 9 ]
// 입출력2: [ 5, 10, 1, 1, 20, 1 ]

(7, 3) (9)

(5) (10, 1, 1) (20, 1)

이렇게 배포날짜 기준으로 개발 완료 기능들임

배포날짜와 현재 작업이 필요한 날짜 비교

  1. 배포날짜 >= 작업필요날짜

    하나의 묶음에 넣어야함 따라서, jobCompleted++

  2. 배포날짜 < 작업필요날짜

    묶음이 끝나므로, 이전 묶음의 jobCompleted값을 answer배열에 넣기

    배포날짜 변경, 현재 탐색되고 있는 기능을 jobCompleted에 포함해서 1로 초기화

    단, 첫번째 인덱스의 경우엔 이전 묶음이 없으므로 단순히 jobCompleted++

profile
비요뜨 최고~

0개의 댓글