Algorithm/문제풀이_백준
Swift) 백준 1712번
Joahnee
2021. 8. 3. 21:57
요구능력 : 수학적으로 풀 생각을 할 수 있느냐
코드설명 : 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)")
}