[Swift] 두 정수 사이의 합 - 프로그래머스 Lv 1

Ryan (Geonhee) Son·2021년 7월 6일
0

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)
}
profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글