문제

 

내가 작성한 코드
# A(고정비용), B(가변비용), C(1대의 노트북 가격)
a, b, c = map(int, input().split())

if (c-b) > 0:
    print( (a // (c-b)) +1)
else:
    print(-1)

> 처음에 while문으로 했는데 '시간 초과'로 실패했다. 천천히 수학적으로 생각하면은 길이 보인다!!

 

코드 설명
a, b, c = map(int, input().split())

> a는 고정비용, b는 가변비용, c는 1대의 노트북 가격으로 한 줄에 빈칸을 간격으로 떨어져있으므로 map(int, input().split()) 함수를 사용했다.

 

if (c-b) > 0:
    print( (a // (c-b)) +1)
else:
    print(-1)

> 코드를 짜기 전에 1차 방정식으로 이 문제를 생각해 볼 수 있다.

> 고정비용 + (가변비용 * 노트북 판매 수) < 노트북 가격 * 노트북 판매 수

> 노트북 판매수를 x로 치환하면 -> 고정비용 + 가변비용x < 노트북가격x -> (노트북 가격 - 가변비용)x > 고정비용

> 추가로, 손익분기점이 존재하지 않으면 -1을 출력하라고 했기 때문에 if-else문을 적용했습니다.

> (c - b)는 (노트북 가격 - 가변 비용)인데 이 값이 0보다 작으면 손익분기점이 존재하지 않게된다.

> 그러므로 0보다 작으면 print(-1)을 출력하게 했다.

> (a // (c-b) ) + 1은 고정비용을 (노트북 가격- 가변비용)의 값으로 나누었을 때 몫에 1을 추가한 값이다.

> 1을 추가하지 않으면 손익분기점이 0일 때이므로 +1을 해주었습니다.

+ Recent posts