반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

[프로그래머스] 기능개발 - JS 본문

Coding Test

[프로그래머스] 기능개발 - JS

JavaScripter 2022. 7. 3. 09:46
반응형

문제 설명

 


문제 풀이

function solution(progresses, speeds) {
    const answer = []
    const rest = progresses.map((e,i)=>{
        return Math.ceil((100-e)/speeds[i])
    })
     let maxRest = rest[0]
     let count = 1
     
     for(let i=1;i<rest.length;i++){
         if(maxRest>=rest[i]) {
           count++
       } else{
            maxRest = rest[i]
          answer.push(count)
          count=1
       }
     }
    answer.push(count)
    return answer
}

1. 잔업률을 구한다. 이때 잔업량이 소수점인 경우 다음 날 완료 되기 때문에 Math.ceil로 반올림 해준다. 

 

2. 비교를 위해 가장 큰 잔업량을 rest[0]으로 지정해준다. count는 자신도 포함해야 되기 때문에 1로 시작

 

3. rest배열을 돌려서 maxRest가 크다면 카운트를 1씩 더해준다. (앞의 잔업량이 더크다면 뒤는 이미 완료되었기 때문)

 

4. 그게 아닐때에는 maxRest를 업데이트 해주고 그동안 쌓인 count를 answer에 넣어준다. 그리고 카운트 초기화.

 

5. 만약 마지막 남은 수가 maxRest보다 작다면 카운트만 되고 answer 배열에 들어가지 못하기 때문에 마지막에 answer.push()한다.


배운 점

Math.ceil = 소수점이 있는 경우에 무조건 반올림 해준다.

 

reduce보다 map이 빠르다.

반응형
Comments