문제 설명
두 정수 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의 대소관계는 정해져있지 않습니다.
입출력 예
내가 푼 방법
fun solution(a: Int, b: Int): Long {
var answer: Long = 0
var low = a
var high = b
if (low > high) {
var temp = high
high = low
low = temp
}
for (num in low..high) {
answer += num
}
return answer
}
간단하다고 생각하고 생각나는데로 직관적으로 풀었다.
코드 첨삭
fun solution(a: Int, b: Int): Long {
// a와 b의 대소 관계를 정합니다.
val start = Math.min(a, b)
val end = Math.max(a, b)
// start부터 end까지의 정수 합을 계산합니다.
// 가우스 합 공식을 사용하여 효율적으로 계산합니다.
return (start.toLong() + end) * (end - start + 1) / 2
}
일단, 큰값 작은값 구할때 내장함수 사용해서 사용해서 훨씬 간단하다. 그리고 수학적으로 가우스 합 공식을 사용하니 간단하고 효율적이고 있어보이는 방법이다.
등차수열의 합
https://workshop-code.tistory.com/51
반응형
'Dev > Algorithm' 카테고리의 다른 글
간만의 알고리즘 공부 - 9 (멀리 뛰기 | 피보나치 수열) (0) | 2024.07.06 |
---|---|
간만의 알고리즘 공부 - 8 (하샤드 수) (0) | 2024.07.06 |
간만의 알고리즘 공부 - 5 (행렬 곱셈) (0) | 2024.07.03 |
간만의 알고리즘 공부 - 4 (이진 변환 반복하기) (0) | 2024.07.03 |
간만의 알고리즘 공부 - 3 (정수제곱근 판별) (0) | 2024.06.30 |