map
을 활용하여 배열에 저장된 수를 다 더해줌function solution(n) {
var answer = 0;
var aliquot = []
for(var i=1; i*i<=n; i++){
if(n%i==0){
aliquot.push(i, n/i)
}
}
var sqrt = Math.sqrt(n)
if(Number.isInteger(sqrt) == true) aliquot.splice(aliquot.indexOf(sqrt), 1)
aliquot.map(num => answer += num)
return answer;
}
aliquot.push(i, n/i)
에서 만약 n이 36이고 i가 6이라고 가정한다면 배열에 6이 두번 들어가는 상황이 발생하기 때문에 테스트를 통과하지 못했던 것.Math.sqrt()
: 숫자의 제곱근을 반환Math.sqrt(9); // 3
Number.isInteger()
: 값이 정수인지 판별하는 메서드Number.isInteger(9); // true
매일 너무 못하는 것 같아 자괴감에 빠지면서 힘들고 그랬는데 그래도 그렇게 투자한 시간들이 때때로 오늘처럼 갑자기 빛을 보는 순간이 있다. 정말 별거 아니지만 이 순간들이 있어서 더 열심히 하게된다.
이 문제를 풀면서 내가 문제를 풀기위한 코드만 작성하는 것이 아닌 효율성을 생각하면서 코드를 작성하고 있다는 사실을 알고 놀랍기도 했지만 어색하기도 했다.
이전에 전혀 상상할 수 없었던 나의 모습이기 때문엥ㅎㅎㅎ너무 신기하다.
물론 그렇게 해서 내가 작성한 코드가 진짜 효율적인지 확신은 못하지만 메서드 사용법도 몰라 문제푸는 데에만 전전긍긍하던 일주일 전을 생각하면 감격스럽다😊