양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
function solution(n) {
let sum = 0;
if (n%2===0){
for(let i=2; i<=n; i+=2){
sum+=i*i
}
} else {
for (let i=1; i<=n; i+=2){
sum+=i
}
}
return sum;
}
=> if조건문과 for반복문을 이용해 풀었다.
function solution(n) {
if(n%2===1)
return (n+1)/2*((n + 1)/2) ;
else
return n*(n+1)*(n+2)/6;
}
=> n이 홀수일 때는 등차수열의 합 공식을 이용하면
(n은 항의 개수,a는 첫째항,d는 공차)
문제에서 항의 개수는 (n+1)/2이다. 위의 식에 항의 개수와 첫째항 1, 공차 2를 넣어주면 다음과 같은 식이 나오고 다음 식을 통해 홀수의 합을 구할 수 있다.
첫 번째 짝수부터 n/2번째 짝수까지의 합을 구해봅시다.
짝수들의 제곱의 합을 구하기 위해 각 짝수를 제곱하여 더해봅시다.
이를 좀 더 간단하게 표현하기 위해 공통된 요소를 묶어봅시다.
1부터 n/2까지의 제곱의 합인 sum(i^2)는 다음과 같은 공식을 가집니다.
따라서, 짝수들의 제곱의 합은 다음과 같이 표현할 수 있습니다.
이렇게 유도된 공식을 사용하여 연속된 짝수들의 제곱의 합을 구할 수 있습니다.