Swift로 프로그래머스 두 정수 사이의 합 문제를 해결하며 얻은 지식을 정리합니다.
func solution(_ a:Int, _ b:Int) -> Int64 {
var result = 0
for t in a<b ? a...b : b...a {
result += t
}
return Int64(result)
}
최초에는 아래의 풀이를 제출하였는데, Array()
의 실행 속도 문제인지 실행 시간 초과가 발생했다.
func solution(_ a:Int, _ b:Int) -> Int64 {
return Int64(Array(a > b ? b...a : a...b).reduce(0, +))
}
컴퓨터에게 어떻게 일을 시킬지에 매몰되어 있다 수학 지식을 이용할 수 있다는 점을 잊고 있었다. 모든 숫자를 순회하며 계산하지 않으므로 실행 속도는 타의 추종을 불허한다.
func solution(_ a:Int, _ b:Int) -> Int64 {
return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2)
}