본문 바로가기
기초다지기/JS 코딩테스트

javascript a,b 사이의 모든 정수의 합

by 김빵그 2023. 10. 5.

문제

두 숫자 a, b 사이의 모든 정수의 합을 계산해라

내 코드 풀이

function solution(a, b) {
    let sum = 0;

    if (a <= b) {
        for (let i = a; i <= b; i++) {
            sum += i;
        }
    } else {
        for (let i = a; i >= b; i--) {
            sum += i;
        }
    }
    return sum;
}
  • for문을 사용해 a와 b 중 큰 수를 확인후 이에 따라 for 루프를 사용하여 합을 계산한다

코드 리팩토링 1

function solution(a, b) {
    let sum = 0;
    let start = Math.min(a, b);
    let end = Math.max(a, b);

    for (let i = start; i <= end; i++) {
        sum += i;
    }

    return sum;
}

1. start와 end 변수를 사용하여 시작값과 종료값을 결정한다

  • Math.min 과 Math.max 함수를 사용하여 두 값을 정렬한다

2. for 문을 사용해 작은 숫자에서 큰 숫자로 진행한다

 

코드 리팩토링 2

function solution(a, b) {
    return (a + b) * (Math.abs(b - a) + 1) / 2;
}

a와 b 사이 모든 정수의 합을 계산하는 수학적인 공식 사용

1. Math.abs(b - a ) + 1

  • 이 부분은 주어진 a와 b 사이에 있는 숫자의 개수를 나타낸다
  • Math.abs 함수는 절대값을 반환하는 함수로, 두 숫자 a,b 차이를 절대값으로 만들어 양수로 변환한다 그 다음 +1 하여 a 와 b 사이의 숫자의 개수가 된다

2. (a + b) 

  • a와 b를 더한 값으로 이는 등차수열의 첫번째 항과 마지막 항을 더한 값

3. / 2 

  • 최종 결과값을 2로 나눈다. 등차수열 합을 계산하는 공식에서 사용되는 상수 2를 나누기 때문

 


수포자라 슬프다... 하수 코드 for문만 생각나는 바보 ..