[TIL #7] 짝수의 합 구하기

2024. 6. 25. 16:11·Camp/T.I.L.

심플한 등차수열 문제.

정수 n이 주어질 때, n 이하의 모든 짝수를 더한 수를 리턴하면 된다.

 

단순하게 아래와 같이 할 수도 있다.

int solution(int n) {
    int answer = 0;
    
    for(int i = 0; i <= n; i += 2)
        answer += i;
    
    return answer;
}

하지만 이건 뭔가 아쉽지 않은가?

좀 더 괜찮은 답을 찾아보자.

 

 

등차수열

이 문제는 2부터 시작해서 2의 공차를 가지는 등차수열의 합을 구하는 문제이다.

간단하게 말해서 짝수의 합.

 

짝수 수열 $2, 4, 6, \ldots, 2k$의 합을 구하는 공식은 다음과 같다.

\[ S = 2 + 4 + 6 + \ldots + 2k \]

 

이를 일반화하면 다음과 같이 나타낼 수 있다.

$$S = 2 \times (1 + 2 + 3 + \ldots + k)$$
여기서 $k$는 $n$을 2로 나눈 몫이다.

 

1부터 $k$까지의 합은 $\frac{k(k + 1)}{2}$이다. 이를 짝수로 변환하면
$$S = 2 \times \frac{k(k + 1)}{2} = k(k + 1)$$

 

따라서, 주어진 $n$ 이하의 짝수의 합은:
$$S = k(k + 1)$$
여기서 $k = \left\lfloor \frac{n}{2} \right\rfloor$

 

 

그럼 이걸 코드로 옮기면 다음과 같다.

#include <cmath>

int solution(int n) {
    int cnt = floor(n / 2);
    int answer = cnt * (cnt + 1);
    return answer;
}

 

 

새삼 알고리즘이란 이런 것이었지 하는 생각이 든다.

 

'Camp > T.I.L.' 카테고리의 다른 글

[TIL #9] 홀짝 구분  (0) 2024.06.27
[TIL #8] 배열의 평균값  (0) 2024.06.26
[TIL #6] Github Page로 웹페이지 배포  (0) 2024.06.24
[WIL #1] 첫 주를 돌아보며  (0) 2024.06.21
[TIL #5] Firebase 활용  (0) 2024.06.21
'Camp/T.I.L.' 카테고리의 다른 글
  • [TIL #9] 홀짝 구분
  • [TIL #8] 배열의 평균값
  • [TIL #6] Github Page로 웹페이지 배포
  • [WIL #1] 첫 주를 돌아보며
BVM
BVM
  • BVM
    E:\
    BVM
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Thoughts (14)
      • Study (69)
        • Japanese (3)
        • C++ & C# (46)
        • Javascript (3)
        • Python (14)
        • Others (3)
      • Play (1)
        • Battlefield (1)
      • Others (11)
      • Camp (73)
        • T.I.L. (57)
        • Temp (1)
        • Standard (10)
        • Challenge (3)
        • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 본 블로그 개설의 목적
  • 인기 글

  • 태그

    7계층
    스타필드
    Network
    C++
    베데스다
    Selenium
    c#
    클라우드
    포인터
    db
    네트워크
    프로그래머스
    cloudtype
    로깅
    FF14
    Python
    네트워크 프로그래밍
    IOCP
    서버
    bot
    docker
    Asio
    JS
    discord
    암호화
    Dalamud
    discord py
    Server
    boost
    OSI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
BVM
[TIL #7] 짝수의 합 구하기
상단으로

티스토리툴바