백준 1712번 자바
https://www.acmicpc.net/problem/1712
문제 내용은 아래 더보기를 누르면 나온다.
알고리즘
A = 고정 비용
B = 가변 비용
C = 노트북 가격
손익분기점 : 총 수입(판매비용) > 총 비용(A + B)
노트북을 얼마나 팔아서 손익분기점을 넘기는지 구하시오.
(A, B, C는 21억 이하 자연수)
손익분기점이 나오지않으면 -1 출력해야한다.
여기서 우리는 손익분기점에 대해 생각해야한다.
A + B * 판매대수 = 총 비용
C * 판매대수 = 총 수입
총 수입 > 총 비용 의 조건이 성립한다면 손익분기점인 것이다.
여기서 공통점이 B와 C는 판매대수를 곱한다는 것이다.
그렇기에 B가 C보다 많다면 손익분기점을 절대 넘길 수 없다.
그렇다면 다음과 같은 공식이 성립된다.
if(B >= C) {
// 손익분기점을 넘길 수 없다.
System.out.println("-1");
}
다음은 손익분기점의 공식을 살펴보자.
문제에서는 총 수입 > 총 비용 이면 이익이 난다고 했다.
즉, 총 수입 = 총 비용 이면 이익과 손실이 없는 기준점이다.
이 기준점을 수식화하면 다음과 같다.
상품가격 * 판매대수 = 고정비용 + 가변비용 * 판매대수
if(B >= C) {
// 손익분기점을 넘길 수 없다.
System.out.println("-1");
} else {
// 손익분기점을 가질 수 있다.
System.out.println(A/(C-B) + 1);
}
즉 위와 같이 만들어진다.
1. 한 줄에 A, B, C 를 입력받는다.
2. 공백을 기준으로 구분하여 각각 A, B, C에 저장한다.
3. 위의 공식들을 넣는다.
풀이1
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class No_1712 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
if (B >= C) {
System.out.println("-1");
} else {
System.out.println(A/(C - B) + 1);
}
}
}
'코딩테스트 > Java - 백준' 카테고리의 다른 글
[백준] 3003번 - Java(자바) (0) | 2022.03.14 |
---|---|
[백준] 2292번 - Java(자바) (0) | 2022.03.10 |
[백준] 1316번 - Java(자바) (0) | 2022.03.05 |
[백준] 2941번 - Java(자바) (0) | 2022.03.02 |
[백준] 5622번 - Java(자바) (0) | 2022.02.27 |