CodingSpace

프로그래머스#6(Lv.2)_기능개발 본문

프로그래머스/Level2

프로그래머스#6(Lv.2)_기능개발

개발자_조이킴 2021. 11. 30. 01:24

기능개발

다른 분들이 하신것 보고 배우고 또 배우자! (map 메소드!)

 

입출력 예시

 

// 프로그래머스 - 기능개발
function solution(progresses, speeds) {
    // 만약 작업의 개수가 0이라면, 빈 배열을 return한다
    if(progresses.length === 0) return []
    
    let result = []
    
    // 모든 프로세스가 마무리(100% 이상) 될때까지 while문이 실행된다
    while(progresses.length > 0) {
        // 맨 앞에 프로세스 요소의 진도가 100% 이상 될때까지 while문이 실행된다
        while(progresses[0] < 100) {
            // 진도가 100% 미만이라면, 각 요소의 속도에 맞게 진도를 업데이트 해준다. 
            for(let i = 0; i < progresses.length; i++) {
                if(!(progresses[i] >= 100)) progresses[i] = progresses[i] + speeds[i]
            }
        }
        // 맨 앞의 요소부터 연속적으로 진도가 100% 이상되는 요소를 세어준다
        let cnt = 0
        for(let i = 0; i < progresses.length; i++) {
            if(progresses[i] >= 100) {
                cnt++
            } else break;
        }
      // cnt 수만큼 progresses와 speeds 배열의 앞요소를 제거한다
       for(let i = 0; i < cnt; i++) {
           progresses.shift()
           speeds.shift()
        }
      // cnt를 result의 삽입해준다
        result.push(cnt)
    }
    
    return result
}

 

<다른분의 solution>


 

Comments