
문제를 풀면서 느끼는거지만 문제는 어떻게 해서든 푸는 것은 가능하다. 다만 어떻게 코드를 짰고 좀더 효율적인가의 문제인것같다.. 문제를 보고 바로 짠 코드는 다음과 같다.
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
var answer:Int64 = -1
var totalprice = 0
for time in 1...count {
totalprice += price * time
}
if money > totalprice {
answer = 0
} else {
answer = Int64(totalprice - money)
}
return answer
}
이렇게 코드를 짜고 좀더 줄일 방법이 없을까 해서 다른사람들의 풀이를 참고해보니 수학적 사고가 들어간 풀이가 꽤 있어 참고해보았다. 어떤 연속된 범위의 숫자를 더할때 공식이 있었는데 (이걸 마지막으로 배운게 고등학생때인가..🥲) 오랜만에 복기할 수 있어서 좋았다.
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
let totalPrice = price * (count * (count+1)/2)
if money >= totalPrice {
return 0
}
return Int64(totalPrice - money)
}