switch - case문
알고리즘 문제를 풀다보니 Switch문을 사용했는데 평소 쓸 일이 많이 없었어서 생소하게 느껴졌다.
짝수의 합
1 ~ N 값 중에 짝수의 합을 구하는 문제를 풀었다.
우선 N 값이 5이라고 가정하고 자연수의 합을 구하는 공식을 시각적으로 알아보자.
일반적으로 사람 수를 센다고 가정하면 사각형으로 섰을 때, 가로와 세로의 수를 곱하면 편하기 때문에 2배수를 만들어 사각형을 만들어보면 위의 그림과 같다.
즉 5 X (5+1)의 값이 사각형의 값이 되고, 이것을 절반으로 나누면 1 ~ 5 까지의 자연수 합인 15의 값을 구할 수 있게 된다.
최종적으로 N X (N+1) / 2 의 공식을 구할 수 있게 되었다.
그럼 여기서 N = 5 까지의 숫자 중 짝수의 합을 구한다고 하면
N을 2로 나누어 짝수의 총 개수는 K = 2가 된다. 그리고 K x (K+1) / 2 자연수 합 공식을 통해 3의 값을 구할 수 있게 되었다.
이 자연수의 합인 3의 값에 2를 곱하게 되면 짝수의 합을 구할 수 있게 되고, 최종적으로 K x (K+1)이 짝수의 합을 구하는 공식인 것을 확인할 수 있고 6의 값을 얻을 수 있다.
예) N이 10일 때, 짝수의 총 개수는 5가되고, 5 x (5+1)을 통해 짝수의 합은 30이 된다.
N이 17일 때, 짝수의 총 개수는 8이 되고, 8 x (8+1)을 통해 짝수의 합은 72가 된다.
C++ 표준 라이브러리 std::accumulate
std::accumulate 라이브러리는 배열에 있는 값들을 계산하기 위해 사용된다.이를 사용하기위해 numeric 헤더를 포함시켰다.
첫 번째 인자 값은 연산 시작 위치를 의미하고, 두 번째 인자 값은 연산 종료 위치이다.
마지막으로 세 번째 인자는 초기 값을 의미하고 return 값의 Type과 동일해야한다.
이처럼 초기 값을 1로 두고 곱셈을 할 수도 있다.
'내배캠 > TIL' 카테고리의 다른 글
24.12.09 (월) (0) | 2024.12.09 |
---|---|
24.12.06 (금) (1) | 2024.12.06 |
24.12.05 (목) (1) | 2024.12.05 |
24.12.04 (수) (0) | 2024.12.04 |
24.12.02 (월) (1) | 2024.12.02 |