공대생의 비망록

[프로그래머스][Lv. 1] 두 정수 사이의 합 Swift 풀이 본문

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
Comments