# [스택/큐][Lv2] 기능개발 - 자바스크립트

# 프로그래머스 문제

https://programmers.co.kr/learn/courses/30/lessons/42586?language=javascript (opens new window)

# 시도 1.

생각한대로 코딩했는데 한번에 풀렸다.,,

  • CompletedProcessCnt 하루동안 작업 완료된 기능의 수를 담을 정수 변수
/*
- 진도가 100%일 때 서비스에 반영가능
- 각 기능의 개발속도는 모두 다름
- 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있음 -> 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포
- progresses : 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열
- speeds : 작업의 개발 속도가 적힌 정수 배열
- return : 각 배포(최소 1일)마다 몇 개의 기능이 배포되는지
*/
function solution(progresses, speeds) {
    var answer = [];
    let _progresses = progresses;
    
		// 진도가 100%인 서비스는 배열에서 빠질 것이므로 배열이 빌때까지 loop
		// loop 한번 도는 것 = 하루
    while( _progresses.length !== 0 ){
        var CompletedProcessCnt = 0;
        
        // 기능 별 개발속도 더하기(하루 간 작업 한 것)
        for(var i=0; i<_progresses.length; i++){
            _progresses[i] += speeds[i];
        }
        
        // 만약 첫번째 기능이 개발 완료 되었다면 맨 앞 요소를 추출, 
        // 뒤에 개발 완료 된 서비스들도 함께 배포 되어야 하므로 while loop
        while( _progresses[0] >= 100 ){
            CompletedProcessCnt++;
            _progresses.shift();
            speeds.shift();
        }        
        
        if( CompletedProcessCnt !== 0 ) answer.push(CompletedProcessCnt);
    }
    
    return answer;
}
정확성  테스트
테스트 1 〉	통과 (0.09ms, 30.1MB)
테스트 2 〉	통과 (0.47ms, 30.2MB)
테스트 3 〉	통과 (0.58ms, 29.7MB)
테스트 4 〉	통과 (0.14ms, 29.9MB)
테스트 5 〉	통과 (0.09ms, 30MB)
테스트 6 〉	통과 (0.12ms, 30MB)
테스트 7 〉	통과 (0.55ms, 30.1MB)
테스트 8 〉	통과 (0.14ms, 30.2MB)
테스트 9 〉	통과 (0.42ms, 30.3MB)
테스트 10 〉	통과 (0.44ms, 30.4MB)
테스트 11 〉	통과 (0.08ms, 30.1MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0

# 다른 사람 답변 통해 배워보기

  1. 내 코드의 경우 초기 작업진도가 1이고, 작업 속도가 1인 경우 loop를 99번 돌아야 한다. 하지만 다음 코드의 경우 아예 계산을 해서 처리했다.

    let beforeCommitDay = 0;
    
    progresses.map((a, i) => {
            let day = Math.ceil((100 - a) / speeds[i]);   
    
            if(day > beforeCommitDay) {
                answer.push(1)
                beforeCommitDay = day 
            }
            else {
                answer[answer.length - 1]++
            }
        })
    
Last Updated: 8/11/2022, 5:17:02 AM