티스토리 뷰

노트북을 판매한 수량을 N개라고 했을 때 A+B*N보다 C*N이 커지는 시점이 손익분기점이 된다. 
손익분기점이 존재하지 않는 경우는 B>=C인 경우이다.

처음 고안한 방법 
1) while문을 이용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] s = br.readLine().split(" ");
		long fixA = Integer.parseInt(s[0]);
		long flexB = Integer.parseInt(s[1]);
		long priceC = Integer.parseInt(s[2]);
        int tmp =0;

		if(flexB>=priceC) {
			System.out.println("-1");
		}else {
			while(fixA+flexB*tmp>=priceC*tmp) {
				tmp++;
			}
			System.out.println(tmp);
		}

	}

}

 

2) 생각을 조금 더 해서 생각해낸 방법 

물건을 팔아서 얻는 이득은 C-B이고 A=C-B (A/(C-B)=1)인 경우 
손실과 이득이 딱 같아지는 시점이다. 그리하여 A/(C-B)가 0인 경우도 생각하여서 +1을 해줌으로써 문제를 풀 수 있다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] s = br.readLine().split(" ");
		long fixA = Integer.parseInt(s[0]); //고정 비용
		long flexB = Integer.parseInt(s[1]); //가변 비용
		long priceC = Integer.parseInt(s[2]); //가격

		

		if(flexB>=priceC) {
			System.out.println("-1");
		}else {
			System.out.println(fixA/(priceC-flexB)+1);
		}

	}

}

'Algorithm > 백준 문제풀이' 카테고리의 다른 글

백준 2751 수 정렬하기2 자바  (0) 2019.12.14
백준 2231번 분해합  (0) 2019.11.29
백준 15740  (0) 2019.05.28
백준 스택수열 1874번  (0) 2019.05.11
제 3회 생각하는 프로그래밍 대회 문제  (0) 2019.05.07
댓글