문제
기능개발
해결
function solution(progresses, speeds) {
var answer = [0];
let days = [];
for ( let i in progresses) {
let day = Math.ceil((100 - progresses[i]) / speeds[i]);
days.push(day);
}
let max = days[0];
console.log(days);
for (let i = 0, j=0; i<days.length; i++) {
if (days[i] <= max) {
answer[j] +=1;
} else {
max = days[i];
answer[++j] =1;
}
}
return answer;
}
생각
- 문제를 이렇게 정리해보니 최대값을 만나기 전까지의 개수가 결과값이라는 것을 알았다.
- 처음엔 최대값 만나기 전까지 cnt를 ++ 해준다.
- 그리고 이것처럼 배열안에서 최대/최소값을 갱신해야할 때, 초기화 하는 걸 까먹지 말아야겠다.
let max = days[0];
- days[i] 랑 days[i+1]만 비교하면 안된다. days가 [5,10,1,1,20,1] 일 경우 원하는 값을 구할 수 없다. 첨에 이렇게 생각했다.. 단순 ㅎ
알게된 점
- for문에서 변수 두 개를 동시에 선언해서 탐색할 수 있다. 변수도 하나 줄일 수 있다.
- Math.ceil() : 올림
- Math.round() : 반올림