나의 풀이
function solution(progresses, speeds) {
var answer = [];
let arr = []
let count = 1
for(i=0; i<progresses.length; i++){
if(progresses[i] < 100){
arr.push(Math.ceil((100-progresses[i])/speeds[i]))
}
}
let maxDay = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= maxDay){
count++;
} else {
maxDay = arr[i];
answer.push(count);
count = 1;
}
}
answer.push(count);
return answer;
}
arr 배열에 작업이 끝나기까지 남은 일수들을 넣기 위해서 Math.ceil로 소수점이 있다면 올림처리를 해서 일수를 구한 뒤,
maxDay라는 변수를 만들어 0번째 인덱스부터 i번째까지 차례대로 비교를 한 count값을 마지막 리턴해줄 answer에 넣어주면 테스트 케이스가 전부 통과가 된다.
베스트 풀이
function solution(progresses, speeds) {
let answer = [0];
let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
let maxDay = days[0];
for(let i = 0, j = 0; i< days.length; i++){
if(days[i] <= maxDay) {
answer[j] += 1;
} else {
maxDay = days[i];
answer[++j] = 1;
}
}
return answer;
}
나의 풀이와 도달하는 방법은 어느정도 비슷했던거 같아 잘 풀었구나란 생각이 들긴 했으나, map을 이용하면 더 깔끔한 코드를 얻을 수 있다는 점과 ++를 앞에 붙여서 표현해준것이 인상 깊었다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2022.08.02 |
---|---|
[프로그래머스] 3진법 뒤집기 (0) | 2022.08.02 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.07.29 |
[프로그래머스] 실패율 (0) | 2022.07.29 |
[프로그래머스] 모의고사 (0) | 2022.07.29 |