코딩 테스트/프로그래머스

[Swift] 프로그래머스(lv.1) 34 - 두 정수 사이의 합

말차프라푸치노 2022. 3. 18. 20:41

두 정수 사이의 합

문제 설명

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

 

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

 

 

 

문제풀이

1. a와 b의 대소관계를 모르므로 두 수를 비교한다. 작은 수(smallNum), 큰 수(largeNum)

 

2. 작은 수부터 큰 수까지 for루프를 돌며 다 더한다.

 

3. 리턴 타입이 Int64이므로 Int64()로 캐스팅해준다.

 

 

 

코드

내 코드

func solution(_ a:Int, _ b:Int) -> Int64 {
    
    var result = 0
    var smallNum = a
    var largeNum = b
    if(a>b){
        smallNum = b
        largeNum = a
    }
    
    for i in smallNum...largeNum {
        result += i
    }
    
    return Int64(result)
}

 

다른 사람 코드 중 깔끔하다고 생각한 코드

func solution(_ a:Int, _ b:Int) -> Int64 {
    return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2)
}

수열의 합을 사용했다. 수열이라니... 완전 까먹고 있었다.

 

 

 

후기

나름 쉽게 풀었다고 생각했는데 다른 사람들이 수열을 이용해 푼 것을 보고 한 수 배웠다.

수학이 중요하다는 것을 다시금 깨닫는다.