문제설명
두 정수 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의 대소관계는 정해져있지 않습니다.
나의 풀이
class Solution {
public long solution(int a, int b) {
int min = Math.min(a, b); //a와 b 중 작은 값
int max = Math.max(a, b); //a와 b 중 큰 값
return (long)(max - min + 1) * (min + max) / 2; //정수의 합 계산
}
}
- for 루프 대신 가우스덧셈 응용
참고할 만한 다른 사람의 풀이
class Solution {
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
return (b - a + 1) * (a + b) / 2;
}
}
- sumAtoB 함수로 가우스 덧셈을 적용하여 계산하는 부분을 분리함