백준 1712번(손익분기점) 문제풀이

YeonghooAhn·2021년 10월 29일
0

알고리즘

목록 보기
3/5
post-thumbnail

이 문제는 브론즈4 수준의 문제여서 간단하게 해결될 줄 알고 순서도만 그리고 바로 코딩했는데 생각보다 여러 조건에 치여서 한 번에 안 풀린 문제였습니다..

import java.util.*;
import java.util.regex.*;
import java.lang.*;
import java.io.*;

public class Baekjoon1712 {
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        long a = sc.nextLong(); // 상품 고정비용
        long b = sc.nextLong(); // 상품 가변비용
        long c = sc.nextLong(); // 상품 판매수입
        int count = 0; //상품 판매대수
   
        if (b >= c) {
            System.out.println(-1);
            return;
        }
        while (a >= count * c) {
            a += b;
            count++;
        }
        System.out.println(count);
    }
}

우선 int형으로 값을 받아 연산하게 되면 int형 범위를

벗어나서 한 번 에러가 나서 long으로 선언 해주었습니다.

그리고 가변비용이 판매수입보다 크다면 손익분기점이 없는

것이나 다름없기 때문에 바로 -1 출력 후 프로그램을 종료하도록

조건을 걸어야 에러없이 잘 실행됩니다.

그 후 반복문 조건으로 고정비용 >= 판매대수 * 판매수입을 걸고

고정비용과 가변비용을 계속 더해 a에 담아주고

판매대수는 1씩 증가하여 1대씩 판매되도록 하여 조건이

계속 변경되도록 하게 하였습니다.

만약 판매대수 x 판매수입이 고정비용, 즉 고정비용에 가변비용을

계속 더해나간 값 보다 커지는 시기가 온다면 그 시기가 바로

손익분기점이 되므로 조건문을 빠져나와 해당 판매대수인

count를 출력해주면 끝 입니다!

..생각보다 여러 조건들이 있어서 그냥 간단하게 생각하고

제출했다가 여러번 실패한 문제네요.. ㅠㅠ; 그래서 그런지

정답률이 되게 낮습니다..

profile
책 중독 컴공과

0개의 댓글