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

프린이·2020년 11월 26일
1

  • 제 코드는 최선의 방안은 아닙니다.
  • 단순히 기록용, 공유용이니 이 점 보실 때, 참고바랍니다!

🔗 문제 링크

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

📙 내가 생각한 풀이 과정

  • 남은 진도율을 진도 스피드로 나누고 올림해준다.(2.5일같은건 없으니까!)
  • 만약 첫 번째 기능이 7일 후 완료되는데, 그 다음 기능이 3일만에 완성됐다하더라도 그 전 기능이 완료되어지지 않았으니 배포될 수 없어 앞 기능이 완료될 때, 같이 배포된다.
  • 같은 날에 끝나는 기능이 있는 확인해 같은 날에 배포되도록 계산해준다.

📝 답안 코드

function solution(progresses, speeds) {
    var remem = 0;
    var rememArr = [];
    var cntArr = [];
    
    for(var i = 0; i < progresses.length; i++){
        var todo = 100 - progresses[i];
        var now = Math.ceil(todo/speeds[i]);
        
        //전 기능 완료일보다 뒷 기능이 먼저 완료될 시 전 기능 완료일에 맞춰 배포되도록 설정
        if(remem >= now){
            now = remem;
        }else{
            remem = now;
        }
        
        //몇 일 만에 몇 개가 배포되는지 배열에 저장
        if(rememArr.indexOf(now) == -1){
            cntArr.push(1);
            rememArr.push(now);
        }
        //이미 완료일이 배열안에 있을 때, 배포날에 맞는 기능 갯수를 하나 늘려줌
        else{
            cntArr[rememArr.indexOf(now)]++;
        }
        
    }
    return cntArr;
}
profile
주니어 프론트엔드개발자

1개의 댓글

comment-user-thumbnail
2020년 12월 2일

선생님 이번글 너무 짧은거 아닙니까!!!!!! 아쉬워용 삉 ☆: .。. o(≧▽≦)o .。.:

답글 달기