prgms.12912 - 두 정수 사이의 합

이 문제는 매우매우 쉬운 문제라고 생각했다. 그리고 실제로 그랬다. 하지만 다른 사람의 풀이를 보고 또 한번 반성을 했다.

나의 풀이

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

다른 사람의 풀이

반복문으로 더하는 것이 아닌 등차수열의 합 공식을 적용한 것이다. 가우스가 초딩 때 유도했던 바로 그 공식말이다! 정규교과과정은 어디까지 나의 발목을 잡을 것인가..

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