사용한 메소드
Math.ceil 메소드
함수 통과시 나오는 값
solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]);
-> [5, 10, 10, 10 ,20, 20] (5일차에 1번 , 10일차에 2~4번 20일차에 5~6번 배포)
Math.ceil을 하는 이유는 예를들어 30%의 완성도를 가지고 매일 30%씩 진행되는 작업의 경우
1일차 -> 60%
2일차 -> 90%
3일차 -> 완료 이며
이 숫자를 올림표시하면 3이 나온다.
Reduce 함수
중복되는 값을 합쳐서 객체의 형태로 만들어준다.
Object.values() 메소드
Object.values() 메소드
내장 값을 values만 모아 배열로 만들어준다
https://ko.javascript.info/keys-values-entries
Object.values(result) = [1 , 3 , 2] 최종값이 리턴된다.
최종적으로 제출한 코드
function solution(progresses, speeds) {
var answer = [];
for (let i = 0; i < progresses.length; i++) {
let temp = Math.ceil((100 - progresses[i]) / speeds[i]);
answer.push(temp);
if (answer[i] < answer[i - 1]) {
answer[i] = answer[i - 1];
}
}
const result = answer.reduce((accu, curr) => {
accu[curr] = (accu[curr] || 0) + 1;
return accu;
}, {});
answer = Object.values(result);
return answer;
}
다른 사람들의 풀이를 봤는데 속도면에서 크게 차이가 나지 않아서 따로 리펙토링은 하지 않았다.
'IT 학습 > Algorithums' 카테고리의 다른 글
[엘리스 SW 3기] 코테전 입,출력 방식 정리 (0) | 2022.08.21 |
---|---|
정규 표현식 활용하기 (데이터 가공) (0) | 2022.06.03 |
프로그래머스 - 숫자 문자열과 영단어 [split , join] (0) | 2022.04.19 |
프로그래머스 - 신규 아이디 추천 [정규 표현식 , replace] (0) | 2022.04.17 |
프로그래머스 - 위장 [해시_lv2] (0) | 2022.04.10 |