두 정수 사이의 합

문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

먼저 내가 적은 답은 for 문을 사용하여 답을 구하고 싶었다.

 var sum: Int64 = 0

    for i in a...b {
        sum += Int64(i)
    } return sum

a 에서 b까지 반복해서 설정한 후 i 변수에 담아 다 더하면 sum이 나와 문제가 해결 될 것으로 예측하였다.
하지만 테스트 결과, 56점으로 반은 맞게 되었으나, 반이나 오답이었다.

문제와 맞는 식을 제대로 혼자 작성한 것 같아 기분이 너무 좋았지만 결과가 따라오지 못해 내심 아쉬웠다.

func solution(_ a:Int, _ b:Int) -> Int64 {
    let start = min(a, b)
    let end = max(a, b)
    let count = end - start + 1
    let sum = Int64((start + end) * count / 2)
    return sum

    }
} 

그래서 방법을 수정한 식으로 다시 풀어보니 테스트에 합격 하였다.

우선 두 정수 a , b 중 작은 값을 'start'로 , 큰 값을 'end'로 결정한 후
시작과 끝 값을 사용해 등차수열의 합을 계산 해준다.
(시작값 + 끝값) * 사이의 수 + 1 을 하면 해당 식이 완성된다.

'◽️ Programming > ◽️ Algorithm' 카테고리의 다른 글

서울에서 김서방 찾기  (0) 2024.03.05
콜라츠 추측  (0) 2024.03.04
하샤드 수  (0) 2024.03.03
정수 내림차순으로 정리하기  (0) 2024.03.03
정수 제곱근 판별  (0) 2024.03.03