프로그래머스-부족한 금액 계산하기

효딩딩·2023년 12월 14일
0

문제

풀이

풀이 1 시간초과

  • count의 수만큼 for문을 돌려니 시간 초과가 걸린듯하다... 다른방법을 찾아봐야지
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64 {
    //    var answer:Int64 = -1
    var sum: Int = 0
    var result: Int = 0
    
    for i in 1...count {
        sum += price * i
        
    }
    if sum > money {
        result = sum - money
    } else if sum <= money {
        return 0
    }
    return  Int64(result)
}
solution(3,20,4)

풀이 2 - 등차수열 접근

❓ 등차수열(Arithmetic Sequence)

  • 등차수열은 연속되는 항들 사이의 차이가 일정한 수열입니다. 일정한 차이를 '공차(common difference)'라고 합니다.

  • 등차수열 공식 : Sn = n*(a1+an) / 2

  • price 배수로 이루어진 등차수열로 접근하여 n(n+1) / 2 price 이렇게 count의 갯수만큼 3의 배수를 합하여 sum에 할당하였습니다.

  • 삼항연산자를 사용하여 sum이 money보다 큰 경우 ture일때 모자란 금액을 Int64로 변환하여 리턴하고 false일때는 0을 리턴합니다.

func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64 {
    var sum: Int = 0
    
    sum =  count * (count + 1) / 2 * price
    return  sum > money ? Int64(sum - money) : 0
    
}
solution(3,20,4)
profile
어제보다 나은 나의 코딩지식

0개의 댓글