Study/알고리즘
[프로그래머스] 12912. 두 정수 사이의 합 (swift)
domisolll
2020. 7. 21. 22:44
코딩테스트 연습 - 두 정수 사이의 합
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우
programmers.co.kr
풀이
1. 두 수 중 작은 수를 매번 +1 하며 큰 수와 같아질 때까지 반복문을 돌리는 방법도 있지만, 숫자의 차가 클 경우 비효율적이다.
2. 반복문을 사용하지 않고 바로 계산하는 것이 효율적임.
func solution(_ a:Int, _ b:Int) -> Int64 {
var aa: Int64 = Int64(a)
var bb: Int64 = Int64(b)
if(aa > bb) { swap(&aa, &bb) }
var ans: Int64 = 0
let temp: Int64 = aa + bb
ans = temp * ((bb + 1 - aa) / 2)
if((bb - aa) % 2 == 0) {
ans += (bb + aa) / 2
}
return ans
}
코드 개선
func solution(_ a:Int, _ b:Int) -> Int64 {
var aa: Int64 = Int64(min(a, b))
var bb: Int64 = Int64(max(a, b))
var ans: Int64 = 0
let temp: Int64 = aa + bb
ans = temp * (bb - aa + 1) / 2
return ans
}
코드 개선
func solution(_ a:Int, _ b:Int) -> Int64 {
return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2)
}