두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
a | b | return |
---|---|---|
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
class Solution {
public long solution(int a, int b) {
long sum = 0;
while(a != b) {
if(a < b) {
sum += a;
a++;
} else {
sum += b;
b++;
}
}
sum += a;
return sum;
}
}
이것도 처음엔 int sum 했을 때 실패떴는 데 long sum 으로 하니까 해결되었다 ..
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 에 있는 (b - a + 1) * (a + b) / 2
은 다름아닌 등차수열의 합 공식.... 단순 수학 공식인데 생각을 못한 나 자신 반성 ......ㅠㅠ