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

mandarinduk·2021년 4월 7일
0
function solution(progresses, speeds) {
    const answer = [];
    let onProgress = 0; // 현재 개발 중인 작업의 배포까지 필요한 기간
    let day = 0; // 배포일
    let count = 0; // 배포일에 배포하는 작업의 수
    
    // 배포까지 필요한 기간
    const requiredDays = progresses.map((progress, i) => {
        const remainning = 100 - progress;
        return Math.ceil(remainning / speeds[i]);
    });
        
    requiredDays.forEach(requiredDay => {
        if (!onProgress) onProgress = requiredDay;
        if (onProgress < requiredDay) {
            onProgress = requiredDay;
            day++;
            count = 0;
        };
        count++;
        answer[day] = count;
    });
    
    return answer;
}
  • requiredDays 배열에 각 작업마다 배포까지 필요한 기간을 구함
  • onProgress보다 필요한 기간이 더 작은 작업의 경우 같은 day(배포일)에 count(작업 수)를 +1 해서 배포
  • onProgress보다 필요한 기간이 더 긴 작업의 경우 day(배포일) +1을 해서 다른 날에 배포
profile
front-end 신입 개발자

0개의 댓글