코딩테스트 연습 > 코딩 기초 트레이닝
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
n ≤ 100| n | result |
|---|---|
| 7 | 16 |
| 10 | 220 |
내가 작성한 코드는 for문을 활용한 아주 정직한 코드이다😂
홀수일 때는 oddNum에 홀수 값을 할당하였고 짝수일 때는 evenNum에 짝수 값을 Math.pow() 함수를 활용하여 할당하였다.
// 나의 풀이
const solution = (n) => {
let evenNum = 0;
let oddNum = 0;
for(let i = 1; i <= n; i++) {
if(i % 2 === 1) {
oddNum += i;
} else if(i % 2 === 0) {
evenNum += Math.pow(i, 2);
}
}
return n % 2 === 1 ? oddNum : evenNum;
}
아래 풀이에서는 반복문을 활용하지 않고 n이 짝수일 때는 등차수열의 합 공식을 적용하였고, n이 홀수일 때는 자연수 거듭 제곱의 합을 구하는 공식을 적용했다고 한다.
수학적인 지식이 있어야 작성 가능한 코드인 것 같다🥲
// 다른 사람의 풀이 참고
function solution(n) {
if(n % 2 === 1)
return (n+1) / 2 * ((n + 1)/2) ;
else
return n * (n+1) * (n+2) / 6;
}