-
[백준/BOJ] 1712번 : 손익분기점 (JAVA / 자바)백준 2022. 1. 23. 16:37
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1712
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야합니다.
더 자세한 내용은 아래 글 참고 하면 좋습니다.
풀이 방법
우선 손익분기점이 존재하는지를 판단한다. (if문)
손익분기점 존재 여부는 가변 금액이 노트북 가격보다 같거나 큰지를 판단한다.
가변 금액이 더 크면 몇대를 팔아도 손해만 보기 때문이다.
손익분기점 존재 여부를 판단했으면 존재 여부에 따른 출력 값을 정한다.
손익분기점을 넘기 위한 판매 수를 확인 하는 방법은 두가지가 있다.
첫번째는 반복문을 이용해서 한번 반복할때마다 가변 금액을 더하고 판매 가격을 빼는 것으로 손익분기점을 넘을 때까지 반복시키고 반복 횟수를 체크하는 방식
두번째는 가변 금액과 판매금액 만이 계속 변하고 고정 금액은 변하지 않는다. 그렇다면 판매금액에서 가변 금액을 뺴고 그 금액으로 고정 금액을 나누면 손익분기점에 도달하는데까지 몇번이 반복되는지 바로 구해질 것이다. 그 횟수에 손익분기 점을 넘기기 위한 추가 판매 횟수 1회를 더하는 방식
둘다 해볼것이다.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int A = Integer.parseInt(st.nextToken()); int B = Integer.parseInt(st.nextToken()); int C = Integer.parseInt(st.nextToken()); int sum = A; int count =0; //우선 손익 분기점의 유무를 판단 if(B >= C) { System.out.println(-1); }else { while(true){ //손익 분기점을 넘으면 반복문 탈출 if(sum < 0){ break; } //손익 분기점을 넘기 전까지 더하고 뺴기를 반복 //B - C 값을 다른 변수에 저장하고 연산해도 됨 sum += B; sum -= C; count++; } System.out.println(count); } } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int A = Integer.parseInt(st.nextToken()); int B = Integer.parseInt(st.nextToken()); int C = Integer.parseInt(st.nextToken()); if(B >= C) { System.out.println(-1); }else { //항상 말하지만 연산 결과는 따로 변수를 만들어 거기에 저장하고 출력해도 무관함 System.out.println((A / (C - B)) + 1); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 2480번 : 주사위 세개 (JAVA / 자바) (0) 2022.01.23 [백준/BOJ] 2420번 : 사파리월드 (JAVA / 자바) (0) 2022.01.23 [백준/BOJ] 1330번 : 두 수 비교하기 (JAVA / 자바) (0) 2022.01.23 [백준/BOJ] 1297번 : TV 크기 (JAVA / 자바) (0) 2022.01.23 [백준/BOJ] 1008번 : A/B (JAVA / 자바) (0) 2022.01.23