문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
먼저 내가 적은 답은 for 문을 사용하여 답을 구하고 싶었다.
var sum: Int64 = 0
for i in a...b {
sum += Int64(i)
} return sum
a 에서 b까지 반복해서 설정한 후 i 변수에 담아 다 더하면 sum이 나와 문제가 해결 될 것으로 예측하였다.
하지만 테스트 결과, 56점으로 반은 맞게 되었으나, 반이나 오답이었다.
문제와 맞는 식을 제대로 혼자 작성한 것 같아 기분이 너무 좋았지만 결과가 따라오지 못해 내심 아쉬웠다.
func solution(_ a:Int, _ b:Int) -> Int64 {
let start = min(a, b)
let end = max(a, b)
let count = end - start + 1
let sum = Int64((start + end) * count / 2)
return sum
}
}
그래서 방법을 수정한 식으로 다시 풀어보니 테스트에 합격 하였다.
우선 두 정수 a , b 중 작은 값을 'start'로 , 큰 값을 'end'로 결정한 후
시작과 끝 값을 사용해 등차수열의 합을 계산 해준다.
(시작값 + 끝값) * 사이의 수 + 1 을 하면 해당 식이 완성된다.
'◽️ Programming > ◽️ Algorithm' 카테고리의 다른 글
서울에서 김서방 찾기 (0) | 2024.03.05 |
---|---|
콜라츠 추측 (0) | 2024.03.04 |
하샤드 수 (0) | 2024.03.03 |
정수 내림차순으로 정리하기 (0) | 2024.03.03 |
정수 제곱근 판별 (0) | 2024.03.03 |