몽-구
몽구의 우당탕탕 개발 공부
몽-구
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • PS (38)
      • 백준 (24)
      • 프로그래머스 (14)
    • Dev (58)
      • Kotlin (0)
      • Java (4)
      • Spring, SpringBoot (1)
      • C (8)
      • Python (10)
      • Dart (1)
      • 알고리즘 (7)
      • 자료구조 (3)
      • Git (1)
      • Linux (2)
      • VS Code (1)
      • 환경 설정 (8)
      • Conference (1)
      • 42Seoul (3)
      • Node.js (1)
      • ShellScript (1)
      • IntelliJ (0)
      • MacOS (2)
      • 기타 (3)
    • CS (1)
      • 데이터베이스 (1)
    • DS (4)
      • Coursera (4)
    • 리뷰 (1)
      • 제품 리뷰 (1)
    • 일상 (3)
      • 자동화 (1)
      • 목표 및 계획 (2)
      • 회고 (0)
    • 삶에 대한 태도 (1)
      • 유튜브를 보며 (1)

블로그 메뉴

  • GitHub

인기 글

반응형

태그

  • 코딩테스트
  • sort
  • 백준
  • 프로그래머스
  • 정렬
  • Python
  • 백준알고리즘
  • BOJ
  • 파이썬
  • Linux
  • 백준온라인저지
  • 리눅스
  • 알고리즘
  • c언어
  • Algorithm

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
몽-구

몽구의 우당탕탕 개발 공부

[백준 알고리즘][파이썬/Python] 1712번: 손익분기점
PS/백준

[백준 알고리즘][파이썬/Python] 1712번: 손익분기점

2020. 4. 1. 12:30
반응형

문제

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.

 

예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.

 

노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

 

A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.

 

출력

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.

 

입출력 예

 

제출 코드

a, b, c = map(int, input().split())
n = 0

if b >= c:
    print(-1)
else:
    n = a / (c-b)
    print(int(n)+1)
    
    
    
# else:
#     while c*n <= a+b*n:
#         n += 1
#     print(n)
# 위 else문에서는 시간 초과가 뜨는데 while문이 너무나도 많이 돌 경우 그렇게 될 것 같다.
# 예를 들어 b = 100, c = 101이고 a가 아주 크다면 while문이 매우 많이 돌 것이다.
# 그래서 반복보다는 그냥 한 번에 수식을 짜는 것이 맞다.

(1) line 1, 2

고정 비용과 가변 비용, 노트북 1개당 판매 가격을 a, b, c에 각각 할당하고 판매 대수를 세기 위한 변수 n을 선언해준다.

 

(2) line 4, 5

'출력'에 대한 설명에서, 손익분기점이 존재하지 않는 경우는 -1을 출력하라고 한다. 손익분기점이 존재하지 않는 경우는 가변비용이 노트북 1개당 판매가격보다 크거나 같을 경우이므로, 조건문을 걸어둔다.

 

(3) line 6 ~ 8

이건 솔직히 수학을 코딩으로 옮겨놨다고 해도 무방하다. 먼저 프로그래밍적으로 접근하기 위해 line 12 ~ line 15처럼 짰었으나, 입력값이 딱 봐도 21억 이하라는 압도적인 숫자여서 바로 실패해버렸다. 그래서 그냥 손익분기점이 되는 지점 n을 line 7에 수식으로 정리했다. 이때 주의할 점은 n이 정수로 떨어질 수도 있고 소수로 나올 수 있는데, 정수라면 n에 +1을, 소수라면 올림을 해주면 된다.

 

예제 입력 1을 통해 쉽게 알 수 있는데, 노트북을 만약 10대 만들어서 팔았다면 다음과 같은 비용과 수익의 식이 나온다.

 

총비용 : 고정 비용 1,000만원 + 가변 비용 70만원 * 10대 = 1,700만원

총 수익 : 170만원 * 10대 = 1,700만원

 

n = a / (c - b) 라는 식을 통해 n = 10이라는 것을 확인한 것이다. 하지만 이는 총수입이 총비용보다 많아지게 되는 손익분기점(BREAK-EVEN POINT)은 아니라는 것이다. 여기서 한 대를 더 팔아야 총 수입이 총 비용보다 많아지게 된다.

 

소수도 마찬가지인데, 만약 위 예시에서 총비용은 동일하고 노트북 한 대당 150만원의 수익이 있다고 가정해보자.

 

n = a / (c - b) = 1000 / (150 - 70) = 12.5대

 

여기서 총수익과 총비용이 동일해지는 순간을 만들어주는 판매 대수는 12.5대이다. 하지만 노트북을 절반으로 쪼개버릴 수는 없다. 그렇다고 12대를 팔면 총수익이 총비용보다 적다. 그래서 13대를 파는 순간이 손익분기점인 것이다.

 

 

 

Source : https://www.acmicpc.net/problem/1712

반응형
저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

[백준 알고리즘][파이썬/Python] 2581번: 소수  (0) 2020.04.03
[백준 알고리즘][파이썬/Python] 2839번: 설탕 배달  (0) 2020.04.02
[백준 알고리즘][파이썬/Python] 2941번: 크로아티아 알파벳  (0) 2020.03.31
[백준 알고리즘][파이썬/Python] 1065번: 한수  (0) 2020.03.30
[백준 알고리즘][파이썬/Python] 4344번: 평균은 넘겠지  (0) 2020.03.29
    'PS/백준' 카테고리의 다른 글
    • [백준 알고리즘][파이썬/Python] 2581번: 소수
    • [백준 알고리즘][파이썬/Python] 2839번: 설탕 배달
    • [백준 알고리즘][파이썬/Python] 2941번: 크로아티아 알파벳
    • [백준 알고리즘][파이썬/Python] 1065번: 한수
    몽-구
    몽-구
    소망보단 목표를, 생각보단 실천을

    티스토리툴바