프로그래머스 Lv.2: 기능개발

Steve·2021년 11월 25일
0

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

핵심은 미리 걸리는 일수를 계산하는 것이다.
그리고 일수를 하나씩 꺼내서 나머지 일수들과 비교하여 자신보다 작은 일수들의 카운트 + 1 을 answer 배열에 넣는식으로 진행한다.
max 변수를 두어서 일수를 꺼낼 때 이미 카운트를 한 일수는 무시한다.

function solution(progresses, speeds) {
    var answer = [];
    let days = []; // 7, 1, 3, 9
  
    // 미리 걸리는 일수를 구해놓는다.
    for (let i = 0; i < progresses.length; i++){
        let remain = 100 - progresses[i]
        let d = Math.ceil(remain / speeds[i]);    
        days.push(d);
    }
   
    let count = 0;
    let max = 0;
    // 7, 1, 3, 9
  
    while (days.length){
        count++;
        let shift = days.shift();
        if (shift > max) max = shift;
        if (!days.length) {
            answer.push(count)
            break;
        }
        if (max < days[0]){
            answer.push(count);
            count = 0;
        }
    }
    
    return answer;
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글