22.02.10 백준 1712번 문제

김민혁·2022년 2월 10일
1

하루한문제

목록 보기
1/22

코딩테스트 대비 하루 한문제!!

문제

첫번째 제출한답

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을 출력하게함

결과 -> 정답

총풀이시간 20분

profile
안녕하세요 김민혁입니다.

1개의 댓글

comment-user-thumbnail
2022년 2월 10일

margin이 0 이기때문에 ArithmeticException 오류 발생 -> 분모가 0이 될 일이 없는데도 예외가 발생한다니..

답글 달기