Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "두 정수 사이의 합"

by 별의 코비 2022. 11. 21.
728x90

🔥 Programmers Lv.1 : 두 정수 사이의 합


🔍 문제 : " 두 정수 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의 대소관계는 정해져있지 않습니다.


👉🏻 My answer

function solution(a, b) {
    let answer = 0;
    let num = [];
    if (a == b) {
        answer = a;
    } else {
        num.push(a,b);
        num.sort((a,b)=>a-b);
        for (let i=num[0]; i<=num[1]; i++) {
            answer += i
        }
    }
    return answer;
}
: a와 b의 값이 같을 때 두 수 중 아무 수나 반환하도록 answer = a 로 설정해두었고, a와 b가 같지 않을 때 num배열에 a와 b를 push메서드를 통해 배열에 넣어준 후 sort메서드를 통해 오름차순으로 정렬해줍니다.
: 그 후, num[0]과 num[1]사이의 숫자를 더해주기 위해 반복문을 통해 답을 구해줍니다.


👉🏻 Another ways

function adder(a, b){
    var result = 0
    return (a+b)*(Math.abs(b-a)+1)/2;
}
: (Math.abs(b-a)+1) = 총 숫자의 갯수
: (Math.abs(b-a)+1)/2 = 맨처음 숫자와 끝 숫자 씩 묶은 쌍
: 정렬된 숫자의 처음과 끝을 더하고 쌍의 갯수만큼 곱하면 모든 수의 합이 됩니다.

댓글