function solution(a, b) {
if(a === b){
return a;
} else {
let sum = 0;
// a와 b 중 작은 것을 a로 사용한다.
let newA = Math.min(a, b);
let newB = Math.max(a, b);
for(let i = newA; i <= newB; i++){
sum += i;
}
return sum;
}
}
처음 문제 조건을 봤을 때 숫자의 범위가 매우 클 가능성이 있어서, for문 사용을 주저했었는데,
그렇다고 정수 합을 구하는데 reduce나 forEach, map을 사용하기에는
해당 범위의 정수값을 가지는 배열을 먼저 만드는 것이 필요해서 시간이 더 걸릴 것 같았다.
function adder(a, b){
return (a + b) * (Math.abs(b - a) + 1) / 2;
}
등차수열의 합 공식을 활용하신 풀이이다.
등차수열 공식은 다음과 같다.
0 ~ N까지의 합
n * (n + 1) / 2
주의할 점은 프로그래머스 문제에서는 음수가 나올 수 있다는 것이다.
그래서 저런 식이 된 것 같은데...솔직히 잘 이해가 되지않는다.
a, b는 크기와 상관없이 등장하기 때문에, - 연산의 순서가 중요할텐데..어떤 식으로 코드가 동작하는지 모르겠다..
우선은 음의 정수부터 양의 정수까지를 모두 포함하는 경우에 정수의 합을 표현하는 간단한 방법이라고 생각하자.