PS (Problem Solving)/Programmers

[프로그래머스] 기능개발 - 자바스크립트

캐럿노트 2024. 10. 26. 23:08

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

자바스크립트

- 2중 while을 썼는데 실무에서는 보통 while문 사용을 지양하다보니 조금 마음에 걸린다.

function solution(progresses, speeds) {
    let nowProgresses = progresses
    let nowSpeeds = speeds
    let answer = [];
    
    while(nowProgresses.length > 0) {
        // 필요한 일자 - 떨어지지 않을 경우 하루가 더 필요하기 때문에 올림
        const day = Math.ceil((100 - nowProgresses[0]) / nowSpeeds[0])
        
        // 필요한 일수와 스피드 계산
        if (nowProgresses[0] < 100) {
            for (let i = 0; i < nowProgresses.length; i ++) {
                nowProgresses[i] += day * nowSpeeds[i]
            }            
        }
       
        // 완료된 작업 수 카운트
        let cnt = 0;
        while (nowProgresses.length > 0 && nowProgresses[0] >= 100) {
            cnt += 1;
            nowProgresses.shift();
            nowSpeeds.shift();
        }
        answer.push(cnt)
    }
    return answer;
}