본문 바로가기

프로그래머스

5/31[문제풀이] 프로그래머스 Lv2 기능개발

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

 

문제풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function solution(progresses, speeds) {
    var answer = [];
    
    while (progresses.length>0) {
        progresses = progresses.map((val,x)=> val+speeds[x])
    
    let count = 0;
    while (progresses[0>= 100) {
        progresses.shift();
        speeds.shift();
        count++;
    }
    if(count>0) {
        answer.push(count)
        }
    }
    return answer;
}
cs

 

문제를 보고 우선적으로 유의해야 할 것이 아무리 빠른 speeds를 통해 progresses가 100 이상이 되어도 앞에 progresses가 완료가 되지 않으면 기다렸다가 앞의 progresses가 완료되면 같이 카운팅 되어서 나간다는 점인 것 같다.

 

간단히 요약하면 progresses[x]는 speeds [x]만큼 상승하게 되며 progresses [x]가 100 이상이 될 때마다 shift() 해주었다.

 

while 문을 사용하여 배포될 progresses가 없을 때까지 반복해주고 map 함수를 사용하여 speeds 만큼 progresses 더하는 것을 맵핑 해주었다. 그리고 배포될 progresses를 카운팅 해줄 변수 count를 0으로 선언해주고 그 안에 다시 while 문을 사용하여 가장 앞 progresses가 100 이상이 될 때마다 progresses, speeds는 shift를 사용해 지워주고 count는 1씩 올려주었다. 그리고 이 count가 있다면 return 값인 빈 배열인 answer에 하나씩 push 해주는 식으로 코드를 구성했다.