코딩 테스트
[프로그래머스] (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로 나눈 값이 된다.
이를 하나의 메서드로 만들어서 대입하면 풀린다.