프로그래머스 lv1
두 정수 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의 대소관계는 정해져있지 않습니다.
a | b | return |
---|---|---|
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
function solution(a, b) { if(a<b){ return (b-a+1)*(a+b)/2; }else if(a>b){ return (a-b+1)*(a+b)/2; }else{ return a; } }
등차수열의 합 공식을 이용해서 해당 문제를 풀었다.
등차수열의 합 = 항의 갯수 * 평균값
(Sn: 등차수열 합의 일반항, n: 항의 갯수, a1: 첫번째 항)
function adder(a, b){ let result = 0 return (a+b)*(Math.abs(b-a)+1)/2; }
등차수열의 합 공식을 사용하기 위해서는 항의 갯수(n)를 구하기 위해서 a와 b 두 숫자의 차이를 구해야했고, a와 b의 대소관계를 구분하고자 if문을 사용하였다.
하지만 Math.abs()를 사용하면 a,b의 차의 절대값을 구할 수 있기 때문에 코드가 훨씬 간결해진다.
Math.abs(x)
- 매개변수
x : 숫자.- 반환 값
: 주어진 숫자의 절대값.