본문 바로가기

개발/알고리즘

[백준] 기본 수학 - 1712번 손익분기점

반응형
 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

 

입력

A=1,000, B=70이라고 하자.
노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.
최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 출력해라.

출력

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.

풀이

X 대를 생산한다고 가정하고 식을 만들어보면 A + BX >= CX 이 나온다
이를 X 값 위주로 만들어보면

BX - CX <= A
X (B - C) <= A
X <= A / (B - C)

이 나오고 이는 X에 주어지는 최소한의 값이 된다

X <= A / (B - C)

손익 분기점이 존재하지 않을 경우 -1 을 출력해야하니 if 문을 달자

if B < C {
	X <= A / (B - C)
} else {
	print(-1)
}

X 에 반복해서 값을 더해 손익분기점을 넘는 때를 구해본다

 

Swift 전체 코드

var input = readLine()!.split(separator: " ")
var (A, B, C, X) = (0, 0, 0, 0)

A = Int("\(input.first!)")!
input.removeFirst()
B = Int("\(input.first!)")!
C = Int("\(input.last!)")!

X = B < C ? A / (C - B) : -1

while true && B < C {
    X += 1
    if A + (B * X) < C * X {
        break
    }
}

print(X)

 

이게 마음에 걸리는데.. readLine으로 읽고 수를 분리하는 과정에서 배열의 첫번째 부분을 부르는 코딩을 작성했다
아래 처럼 배열의 순서로 수를 부를 수 있지만, 위를 택하나 아래를 택하나 취향차이로 두는지 궁금하다

A = Int("\(input.first!)")!
input.removeFirst()
B = Int("\(input.first!)")!
C = Int("\(input.last!)")!

A = Int("\(input[0])")!
B = Int("\(input[1])")!
C = Int("\(input[2])")!

 

 

 

 

반응형