가우스 공식(등차수열의 합)
가우스 공식(등차수열의 합 공식)
선생님이 학생들을 조용하게 하기 위해 1부터 100까지 더하는 문제를 냈는데,
가우스가 순식간에 답을 제출했다!
1부터 100까지 더한다면 그에 역순인 100부터 1까지를 순서대로 더하고
(1+100,2+99,3+98,4+97 ... 100+1)
그러면, 각각 더한 101 이라는 숫자가 100개 나오게 되고
모두 더하면 10100인데(101이 100개니까),
실제 더하려고 했던 1부터 100까지의 수에서 한번 더 더해진 모양이니
10100 을 2로 나누면 5050.
어떻게 사용할까?
n(x + y)/2 를 x, y 로만 표현하면
((y - x) + 1)(x + y) / 2 이다.
(x 와 y 의 관계는 x < y이다.)
예제
- 프로그래머스 두 정수 사이의 합
두 정수 a, b 가 주어진다.
둘 중 어느 값이 큰 값인지 모른다.
두 정수 사이의 숫자를 모두 더한 값을 구하여라
function solution(a, b) {
return ((Math.abs(a - b) + 1) * (a + b)) / 2;
}
a 와 b 중 큰 값이 무엇인지 모르기 때문에 Math.abs() 사용했다.
- 프로그래머스 부족한 금액 계산하기
이용료(price), 보유금액(money), 이용횟수(count) 가 주어진다.
n번 이상 이용할 경우, price 가 n배 증가한다.
money를 가지고 count만큼 이용했을 때, 부족한 금액을 구하여라
(부족하지 않다면, 0을 리턴한다)
function solution(price, money, count) {
const result = (price * count * (count + 1)) / 2 - money;
return result > 0 ? result : 0;
}
예시 : price = 3, money = 20, count = 4
1회 이용 시, 20(money) - (price * count(1)) === 17
2회 이용 시, 17(money) - (price * count(2)) === 11
3회 이용 시, 11(money) - (price * count(3)) === 2
4회 이용 시, 2(money) - (price * count(4)) === -10
부족한 돈은 10이다.
공식에 대입해보면, result = (3 * 4 * 5) / 2 - 20 === -10
한번 더 해보자
price = 5, money = 43, count = 18
result = 5 *18 *19 /2 - 43 === 812
Author And Source
이 문제에 관하여(가우스 공식(등차수열의 합)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@elinapark/가우스-공식등차수열의-합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)