문제
첫번째 제출한답
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 고정비용
long a = sc.nextInt();
//가변비용
long b = sc.nextInt();
//판매가
long c = sc.nextInt();
//총 비용
long totalCost = a;
//영업이익
long profit=0;
//판매 대수
long cnt = 0;
if(b>c) {
System.out.println(-1);
} else {
while(totalCost>=profit) {
profit += c;
totalCost += b;
cnt++;
//System.out.println(totalCost+" "+profit);
}
System.out.println(cnt);
}
}
}
접근방식 -> 1대를 판매할때마다 총비용에 가변비용을 누적,
영업이익에 판매가를 누적, 판매대수를 1씩 증가시켜서 영업이익이 총비용보다 커질때까지 반복시킴
결과->시간초과
문제점-> 직접 반복문 돌리면서 계산하니 반복횟수가 커졌을때 제한시간인 0.35초를 초과함
두번째 제출한답
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 고정비용
long a = sc.nextInt();
//가변비용
long b = sc.nextInt();
//판매가
long c = sc.nextInt();
//마진(1대 팔때마다 남는 금액)
long margin = c-b;
if(b>c) {
System.out.println(-1);
} else {
System.out.println(totalCost/margin+1);
}
}
}
접근방식 -> 반복문을 돌리지않고 마진이라는 변수를 추가해서 한회차에 계산하게함
결과 -> 런타임 에러 (/ by zero)
문제점 -> 가변비용(b)와 판매가(c)가 같을때 margin이 0 이기때문에
ArithmeticException 오류 발생
3번째 제출한답
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 고정비용
long a = sc.nextInt();
//가변비용
long b = sc.nextInt();
//판매가
long c = sc.nextInt();
//마진(1대 팔때마다 남는 금액)
long margin = c-b;
//총 비용
long totalCost = a;
//영업이익
//long profit=0;
//판매 대수
//long cnt = 0;
if(b>=c) {
System.out.println(-1);
} else {
System.out.println(totalCost/margin+1);
}
}
}
조건식에 b=c일때를 포함시켜 margin이 0일때 -1을 출력하게함
결과 -> 정답
margin이 0 이기때문에 ArithmeticException 오류 발생 -> 분모가 0이 될 일이 없는데도 예외가 발생한다니..