[프로그래머스 | Javascript] 두 정수 사이의 합

박기영·2022년 9월 12일
0

프로그래머스

목록 보기
10/126

solution

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는 크기와 상관없이 등장하기 때문에, - 연산의 순서가 중요할텐데..어떤 식으로 코드가 동작하는지 모르겠다..
우선은 음의 정수부터 양의 정수까지를 모두 포함하는 경우에 정수의 합을 표현하는 간단한 방법이라고 생각하자.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글