프로그래머스 Level1-4 | 등차수열의 합

yuriyaam·2021년 1월 25일
1
post-thumbnail

먼저, 등차수열이란?

등차란 '차가 같다'라는 의미인데, 구구단을 생각하면 이해하기 쉽다.

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) + a1

2Sn = (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를 리턴합니다.

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다
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;
}

0개의 댓글