등차란 '차가 같다'라는 의미인데, 구구단을 생각하면 이해하기 쉽다.
2, 4, 6, 8, 10, ... 은 +2씩 늘어나고 있다. 마찬가지로 3, 6, 9, 12, 15, ... 은 +3씩 늘어나고 있다.
이처럼 일정하게 수가 늘어나는 것을 등차수열이라 한다.
Sn = (a1 + l)n/2
이 공식이 어떻게 나왔는지 확인해보자.
a는 자연수, d는 공차(두 수의 차이), l은 마지막 수이다.
Sn = a1 + (a1+d) + (a1+2d) + (a1+3d) + ... + (l-2d) + (l-d) + l
이렇게 모두 더하면 Sn에 담아지는데, 순서를 바꿔보자.Sn = l + (l-d) + (l-2d) + ... + (a1+3d) + (a1+2d) + (a1+d) + a1
이 두 Sn을 더해보자.
Sn = a1 + (a1+d) + (a1+2d) + (a1+3d) + ... + (l-2d) + (l-d) + l
Sn = l + (l-d) + (l-2d) + ... + (a1+3d) + (a1+2d) + (a1+d) + a12Sn = (a1+l) + (a1+l) + (a1+l) + ... + (a1+l) + (a1+l)
이처럼 공차 d가 사라진다.각 a1, l은 n항만큼 더해지고 있다.
2Sn = n(a1+l)
따라서, Sn = n(a1+l)/2
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
static long solution(int a, int b) { long answer = 0; long min = Math.min(a, b); long max = Math.max(b, a); answer = (max-min+1)*(max+min)/2; // 등차수열의 합 공식 return answer; }