알고리즘 문제 풀기/백준(Baekjoon)

[백준 알고리즘] 은근히 까다로운 1712번 손익분기점 _ 파이썬

hibscus 2021. 2. 4. 00:29

 

[1712번] 손익분기점 

 

 

 

손익분기점을 구하는 문제입니다.

 

 

입력으로 A, B, C가 주어지는 데요.

A는 고정비용 B는 가변비용, C는 판매로 얻는 수익(수입)입니다.

쉬운 듯하면서도 제대로 이해하지 못하면 헤매는 문제입니다.

 

 

 

 

 

💻 2가지로 분류해서 처리해야 합니다.

 

1) 손익 분기점을 달성하지 못하는 상태

: C(이익)이 B(가변비용) 보다 크지 않거나 같을 때 

 

 

2) 손익 분기점을 달성할 수 있는 상태

 C-B>0보다 클 때, C-B를 A(고정비용)으로 나누는 x값의+1 시점이 손익분기점이 됩니다.

 

A, B, C = map(int, input().split())

# 손익분기점에 도달하지 못하는 경우 처리
if B >= C :
    print(-1)
    
# 손익분기점 구하는 식
else:
    print(A//(C-B)+1)
    

 

 

 

 

🎈코드는 쉬운데 주의할 점이 2가지 있습니다.

 

- while로도 처리할 수 있지만, while을 쓰면 시간 초과로 인해 코드가 통과되지 않는다는 점

 

- if에서 B = C가 같을 때 처리를 해주지 않으면, C-B가 0인 경우도 존재하므로

  else에서 0으로 나누게 되어 런타임에러가 발생하게 된다는 점

 

 

 

 

아래는 런타임에러가 발생하는 경우입니다.

 

  1. 배열에 할당된 크기를 넘어서 접근했을 때
  2. 전역 배열의 크기가 메모리 제한을 초과할 때
  3. 지역 배열의 크기가 스택 크기 제한을 넘어갈 때
  4. 0으로 나눌 때
  5. 라이브러리에서 예외를 발생시켰을 때
  6. 재귀 호출이 너무 깊어질 때
  7. 이미 해제된 메모리를 또 참조할 때