Programming Language/Swift
[프로그래머스][Lv. 1] 두 정수 사이의 합 Swift 풀이
myungsup1250
2022. 3. 14. 16:30
https://programmers.co.kr/learn/courses/30/lessons/12912
코딩테스트 연습 - 두 정수 사이의 합
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우
programmers.co.kr
풀이
정말 간단한 문제이다.
for loop를 통해 a부터 b까지 모두 더한 값을 반환하는 방법도 좋지만, 유명한 수학자 가우스가 어렸을 때 발견했다던 공식(등차수열의 합 공식)을 활용해 더 쉽게 문제를 해결해보았다.
a + b 에 a부터 b까지의 수(a, b를 포함)를 곱하고 2로 나누면 그 사이의 모든 수의 합을 빠르게 구할 수 있다.
예를 들어 1부터 10까지의 합을 구한다면,
1 + 10
2 + 9
...
5 + 6
까지 합의 결과가 11이 되는 5(10 / 2)개의 항을 구하면 55라는 결과를 얻는다.
(1 + 10) * 10 / 2 에서 n == 10으로 잡으면, n * (n + 1) / 2라는 공식으로 답을 간단히 구할 수 있음을 확인할 수 있다.
끝!
1
2
3
|
func solution(_ a:Int, _ b:Int) -> Int64 {
return Int64((a + b) * (abs(a - b) + 1) / 2)
}
|
cs |