본문 바로가기
개발/알고리즘

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

by ISA(류) 2021. 8. 19.

# 문제 원문

두 정수 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

# 문제 풀이

 

입력 받은 a,b를 범위로 모든 수들을 합해서 그 합을 반환하는 문제, 가우스 공식에 대해서 잘 아는 사람이면 쉽게 풀 수 있지만, 난 생각도 못해서 반복문을 이용해서 풀었다. 입력받은  a === b가 같으면 a를 바로 반환해주고, 아니라면

입력 받은 a , b 를 a - b로 정렬해서 그 범위의 합을 구한후 반환해준다.

 

# 솔루션 플로우

1. 가우스 공식을 사용하거나, 입력 받은 a, b의 크기를 정렬해준다.

2. 정렬한 a, b를 반복하여서 그 합을 구해준다.

3. 구해준 result를 반환한다.

1. 반복문을 활용한 풀이

function solution(a, b) {
    if(a === b) return a;
    const nums = [a, b].sort((a, b) => a - b);
    let result = 0;
    
    for(let int = nums[0]; int <= nums[1]; int++){
        result += int;
    }

    return result;
}

1. 가우스 공식을 활용한 풀이

function solution(a, b) { // 가우스 공식 사용
    return (a + b) * (Math.abs(b - a) + 1) / 2;
}
반응형