알고리즘, 자료구조/프로그래머스

[프로그래머스/javascript] 두 정수 사이의 합 문제 풀기

soohkang 2021. 4. 5. 21:11
728x90

문제

 

정답 처리된 코드(1)

function solution(a, b) {
    var answer = 0;
    if(a>=b){
        for(let i=b; i<=a; i++){
            answer+=i;
        }
    }else{
        for(let j=a; j<=b; j++){
            answer+=j;
        }
    }
    return answer;
}

 

문제 이해

1) 제한 조건에서 a와 b의 대소 관계가 정해져 있지 않다고 했기 때문에 a가 클 때와 아닐 때로 나눈다.

2) if 문안의 for 문은 a, b 중 큰 값에 따라서 반복문 설정을 한다.

 

 


 

정답 처리 된 코드(2)

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

 

문제 이해

1) Math.abs()는 숫자의 절댓값을 반환한다. 

2) 가우스 공식을 사용한다.

n(n+1)/2

 


 

정답 처리 된 코드(3)

function solution(a, b) {
    var answer = 0;
    var min = Math.min(a, b);
    var max = Math.max(a, b);
    for(var i=min; i <= max; i++){
        answer+=i;
    }
    return answer;
}

 

문제 이해

1) a, b 중 작은 값과 큰 값을 찾는다.

2) 작은 값을 for 문의 시작에 두고 max 값까지 for문을 회전한다.

3) 작은값과 큰 값 사이의 값을 더한다.

 

 

 

 

 

출처: programmers.co.kr/learn/courses/30/lessons/12912?language=javascript

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

programmers.co.kr