문제 설명

문제 링크

[프로그래머스[Level2] 기능개발]
(https://school.programmers.co.kr/learn/courses/30/lessons/42586)

접근 방법

  1. success 배열을 만들어 배포가 이루어지는 일수 저장해주기 => success배열을 탐색하며 기준잡은 success[standard]보다 큰수가 나오기 전까지 cnt값을 ++해줘 기준보다 큰 수가 나올경우 answer에 푸시하기

    코드

function solution(progresses, speeds) {
    var answer = [];
    let cnt =1; //cnt는 앞 뒤 원소 비교후 앞의 원소가 다음으로 오는 원소보다 작을 때까지 ++ 
    let success = []; // success에 (100-progresses)/speeds = ?(일간 작업 후 배포가 가능한지에 대한 저장소)
    for(let i = 0,standard = 0;i<progresses.length;++i){
        success[i]= Math.ceil((100-progresses[i])/speeds[i]);
        if(success[standard]>=success[i]&& i!==0) cnt++; //i!==0 을 해준 이유는 0번째 원소가 기준되어 시작하기 때문에
        else if(success[standard]<success[i]&&i!==0){
            standard = i; //standard를 i번째 인덱스로 바꿔주고
            answer.push(cnt); //그동안 count 된 값 : cnt 를 answer에 push해주기
            cnt = 1; // 다시 같은 것을 반복해주기 위해 1로 초기화
        }
    }
    answer.push(cnt);
    return answer;
}

+ Recent posts