본문 바로가기

Study/알고리즘

[프로그래머스] 12912. 두 정수 사이의 합 (swift)

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 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)
}