문제 #
정수 n이 주어진다.
n은 0 < n <= 1000
이 때, n이하의 짝수를 모두 더한 값을 구하면 됩니다.
풀이 #
짝수의 합을 풀 수 있는 방법은 다양합니다.
n이 충분히 작으므로 1부터 n까지 반복하며 짝수를 누산하면 정답이 나오게됩니다.
시간에 제한도 없으니 이렇게 풀어도 괜찮겠으나 프로그래밍에 수학 공식을 얹어주면 더 깔끔하게 해결 되는 경우가 있습니다.
정수 n이하의 짝수의 합이므로 등차수열의 합공식을 사용하겠습니다.
수학을 이용한 풀이 #
등차수열의 합공식은 입니다.
이 때,
- 은 첫 항
- 은 마지막 항
- 은 항의 개수입니다.
이 식을 활용하여 짝수의 합 공식을 만들어보겠습니다.
- 은 첫 항 = 2
- 은 마지막 항 = n이 짝수인 경우 n, 홀수인 경우 n-1입니다.
- 은 항의 개수입니다. = 짝수는 항의 개수인 n에 반입니다.
- 여기서 마지막 항이 짝수일지, 홀수일지 미리 알 수 없으므로 이 항의 개수입니다.
이를 다시 써보면
입니다.
이를 javascript로 구현하면 아래와 같습니다.
function solution(n) {
const isEven = n % 2 === 0;
const max = isEven ? n : n - 1;
return (max / 2) / 2 * (2 + max)
}