JavaScript에서 최적의 알고리즘 선택하기
때로는 코드의 문제가 과제 해결을 위해 가장 최적의 방법이 선택되지 않았기 때문에 발생하기도 합니다.
예를 들어, 우리에게 1부터 1000000까지의 정수의 합을 구하는 과제가 있다고 가정해 보겠습니다.
주어진 과제를 해결해 봅시다:
let sum = 0;
for (let i = 1; i <= 1000000; i++) {
sum += i;
}
console.log(sum);
무엇이 문제일까요? 사실 이 과제를 해결하기 위해서는 수학적 해법이 존재합니다.
이 해법은 사실상 자원을 거의 필요로 하지 않습니다! 이를 프로그래밍해 보겠습니다:
let n = 1000000;
let sum = n * (n + 1) / 2;
console.log(sum);
교훈: 자원을 많이 사용하는 과제를 해결하기 전에, 그것을 해결하기 위한 기성 수학 공식이나 기성 수학적 접근법이 있는지 꼭 확인하십시오.
1부터 1000까지의 구간에서 나머지 없이 5로 나누어지는 숫자의 개수를 찾으십시오.
1부터 1000000까지의 모든 숫자를 기록하는 데 필요한 숫자 자릿수의 총 개수를 찾으십시오.