[프로그래머스 | JS] Lv0. 홀짝에 따라 다른 값 반환하기

HICHULOG·2023년 7월 10일
0

프로그래머스

목록 보기
11/38
post-thumbnail

홀짝에 따라 다른 값 반환하기

📝 문제

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

⛔️ 제한 사항

  • 1 ≤ n ≤ 100

💡 풀이

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(2a+(n1)d)2\frac{n*(2a+(n-1)d)}{2}
(n은 항의 개수,a는 첫째항,d는 공차)

문제에서 항의 개수는 (n+1)/2이다. 위의 식에 항의 개수와 첫째항 1, 공차 2를 넣어주면 다음과 같은 식이 나오고 다음 식을 통해 홀수의 합을 구할 수 있다.

(n+1)2(n+1)2\frac{(n+1)}{2} * \frac{(n+1)}{2}


=>n이 짝수 일때 거듭제곱의 합을 구하는 식의 유도는 다음과 같다.

첫 번째 짝수부터 n/2번째 짝수까지의 합을 구해봅시다.
짝수들의 제곱의 합을 구하기 위해 각 짝수를 제곱하여 더해봅시다.
(22)+(42)+(62)+...+(n2)=4+16+36+...+(n2)(2^2) + (4^2) + (6^2) + ... + (n^2) = 4 + 16 + 36 + ... + (n^2)
이를 좀 더 간단하게 표현하기 위해 공통된 요소를 묶어봅시다.
4(12+22+32+...+(n2)2)=4sum(i2)(i=1ton2)4(1^2 + 2^2 + 3^2 + ... + (\frac{n}{2})^2) = 4 * sum(i^2) (i = 1 to \frac{n}{2})
1부터 n/2까지의 제곱의 합인 sum(i^2)는 다음과 같은 공식을 가집니다.
sum(i2)=n2(n2+1)(n+1)6sum(i^2) = \frac{\frac{n}{2}(\frac{n}{2}+1)(n+1)}{6}
따라서, 짝수들의 제곱의 합은 다음과 같이 표현할 수 있습니다.
4sum(i2)(i=1ton2)=4n2(n2+1)(n+1)6=n(n+1)(n+2)64 * sum(i^2) (i = 1 to \frac{n}{2}) = 4 * \frac{\frac{n}{2}(\frac{n}{2}+1)(n+1)}{6}=\frac{n(n+1)(n+2)}{6}
이렇게 유도된 공식을 사용하여 연속된 짝수들의 제곱의 합을 구할 수 있습니다.

🚀 TIL

profile
🚀 Front-end Dev

0개의 댓글