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

박기영·2022년 9월 12일
0

프로그래머스

목록 보기
10/159

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개의 댓글

관련 채용 정보