요구능력 : 수학적으로 풀 생각을 할 수 있느냐
코드설명 : A는 고정비용, B는 가변비용, C는 노트북판매가격이다.
식을 적어봤는데 A + (B * ?) = C * ? 이면 총 수입과 총 이익이 같아지는것 이다.
처음에 해본거
while totalSell > totalInput {
count += 1
totalSell = A + (B * count)
totalInput = C * count
}
이거 해보니까 너무 오래걸린다. 21억까지 끝날기미가안보인다.
그래서 다음으로 생각한거 수학적으로 풀어봐야겠다.
참고로 x는 노트북 판매대수이다.
A + Bx = Cx -> A + (B - C)x = 0 -> A = (C - B)x -> A / (C - B) = x
위에서 count를 반복문으로 구하던걸 x로 구했다.
그리고 손익분기점은 최초 총 수입이 총 비용보다 많아져 이익이 발생하는 부분이므로 + 1을 해준다.
후기 : 수학적으로 생각해보면 쉬운문제 하지만 반복문의 늪에 빠지면 오래 생각해야되는 문제가 되버린다..
let n = (readLine()?.split(separator: " ").map{ Int($0)! })!
let A = n[0]
let B = n[1]
let C = n[2]
if B >= C {
print("-1")
}else{
print("\((A / (C - B)) + 1)")
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 1193번(분수찾기) (0) | 2021.08.05 |
---|---|
Swift) 백준 2292번 (0) | 2021.08.05 |
Swift) 백준 2447번(분할정복) (0) | 2021.08.03 |
Swift) 백준 10870번 (0) | 2021.08.02 |
Swift) 백준 10872번 (0) | 2021.07.31 |
댓글