코딩 테스트

[프로그래머스] (Lv.1) 두 정수 사이의 합 *

ImKDM 2022. 9. 1. 16:02
728x90

문제


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

 

 

-  출력 예시  -

정답 코드


<  내 정답 코드  >

class Solution {
    public long solution(int a, int b) {
        long answer = 0L;
        int big = Math.max(a, b);
        int small = Math.min(a, b);
        
        for (int i = small; i <= big; i++) {
            answer += i;
        }
        return answer;
    }
}

 

<  타인 답변 코드  >

class Solution {
    public long solution(int a, int b) {
        return sum(Math.min(a, b), Math.max(a, b));
        
    }
    
    static long sum(long a, long b) {
        return (b - a + 1) * (a + b) / 2;
    }
}

이것을 주의하자!


-  기본적으로 for 문을 사용하면 어렵지 않다.

 

-  하지만, 가우스가 만든 '등차수열의 합' 공식을 사용하는 방법이 있다. 

    :  등차수열의 합 공식은 다음과 같다.    S  =  n ( a  +  l )  /  2  

       일정한 차이로 늘어나는 수열의 합은 ( '첫번째 숫자'  +  '마지막 숫자' ) x  숫자의 개수 에서

       2로 나눈 값이 된다.

       이를 하나의 메서드로 만들어서 대입하면 풀린다.