[백준알고리즘/python3,파이썬] 1712번 손익분기점 문제 및 해결 소스코드

백준알고리즘 2020.12.21 댓글 임통끼
728x90

 

 

 


백준알고리즘 / No.1712 / 손익분기점 / python3, 파이썬


 

문제

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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을 출력한다.

 

예제 입력

1000 70 170

 

예제 출력

11

 


해결 코드

 

<최종 수정 코드>

1
2
3
4
5
6
7
8
9
10
11
12
import sys
 
a, b, c = map(int, sys.stdin.readline().split())
 
result1 = a+b
result2 = c
count = 1
 
if b>= c :
    print(-1)
else :
    print(count+ (a//(c-b)))
cs

 

보니깐 21억 이하의 자연수만 입력받는 다는 부분은 굳이 조건을 안달아줘도 되는것 같다. 확실하게 하고 싶다면 A, B, C의 값을 입력을 받는 부분인 line 3 다음에 코드를 추가해주면 될 것 같다.

하지만 python 같은 경우에는 데이터 처리시간이 다른 언어들보다 많이 잡아먹기 때문에 알고리즘 자체에 있어서 큰 문제가 되는게 아니라면 추가하지 않는 쪽을 추천한다 ! 

 

 

<그전에 삽질한 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
 
a, b, c = map(int, sys.stdin.readline().split())
count = 1
result1 = a
result3 = 0
result2 = c
 
while True :
    if count == 1 :
        result3 = result1 + b
        result2 = c
        count = count + 1
    else :
        if result3 > result2 :
            result2 = result2 + c
            result3 = result3 + b
            count = count + 1
        else :
            break
 
if count == 1 :
    print(-1)
else :
    print(count)
cs

 

내 코드 할많하않...^^...


결과

결국 4번의 시도를 통해 맞히게 되었는데, 보니깐 시간초과로 인해서 3번 실패한 경험이 있다. 

보통 컴파일 에러이거나 그런경우인데, 시간초과 세번이나 틀렸다 .. 보통 시간초과이면 출력되는 결과값은 맞는데 시간이 초과되는 경우인건가..? 너무 궁금해서 코드를 열어봤는데 세상 이렇게 비효율적인 코드가 있을수가...(왜 그랬니..) 알고나면 되게 간단하게 해결되는건데 괜히 어렵게 복잡하게 생각하다보면 코드도 길어지고, 생각이 더 꼬이는것 같다. 알고리즘의 세계란... 

 

 

반응형

댓글