이번 문제를 풀며 내가 수학적 논리력이 없다는 걸 깨달았다
기다려라 수학아...
목록
- 문제 설명
- 나의 풀이
- 수식 설명
- 정답 <- 답만 보고싶다면 (클릭)
문제 설명
손익분기점을 넘기려면 얼마나 판매해야 하나를 구하는 알고리즘
코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine(), " ");
int set = Integer.parseInt(token.nextToken());
int variance = Integer.parseInt(token.nextToken());
int sales = Integer.parseInt(token.nextToken());
double result = set / (1 - ((variance * 1.0) / sales));
double count = result / sales;
if (result <= 0 || Double.isInfinite(result))
System.out.println("-1");
else if ((result % sales) >= 0) {
count++;
System.out.println((int) count);
}
}
}
손익분기점 공식 = > 고정비용 / ( 1 - (가변비용 / 판매비용))
이 공식을 사용했는데 근데 틀렸다....
그래서 인터넷 풀이를 보고 다른 공식이 있어 블로그를 참고하였다!
그럼 어떻게 풀어?
풀이를 보았는데
내가 본 풀이 : https://st-lab.tistory.com/71
그러니 결론적으로 식은 A/(B-C)+1이 손익 분기점을 넘는 우리가 찾는 답이다.
그런데 손익 분기점이 나오지 않을 수 도 있다.
예를 들면 음수가 나오는 것 음수가 나오면 손익 분기 점은 나올 수 없다
(쉽게 생각해 그래프 n(x축)이 음수 쪽에 가있다고 생각해도 되나..?)
자 그럼
자 이제 코드를 작성해 보도록 하자
코드
import java.io.*;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine(), " ");
int set = Integer.parseInt(token.nextToken());
int variance = Integer.parseInt(token.nextToken());
int sales = Integer.parseInt(token.nextToken());
if (sales <= variance)
System.out.println("-1");
else
System.out.println((set / (sales - variance) + 1));
}
}
반성할 점
모르겠다고 바로 풀이를 본 거 수학적 논리를 기르려고 푸는 문제의 중점을 파악하지 못함
참고사이트
1. https://st-lab.tistory.com/71