문제풀이
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 해주는 식으로 코드를 구성했다.
'프로그래머스' 카테고리의 다른 글
6/3[문제풀이] 프로그래머스 Lv2 예상 대진표 (0) | 2021.06.03 |
---|---|
6/1[문제풀이] 프로그래머스 Lv2 프린터 (0) | 2021.06.01 |
5/28[문제풀이] 프로그래머스 Lv2 타켓 넘버 (0) | 2021.05.28 |
5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수 (0) | 2021.05.27 |
5/26[문제풀이] 프로그래머스 Lv2 최솟값 만들기 (0) | 2021.05.26 |