For Programmer

백준 1712번 파이썬 문제풀이(기본수학 - 손익분기점) 본문

코팅테스트/백준 문제 모음

백준 1712번 파이썬 문제풀이(기본수학 - 손익분기점)

유지광이 2021. 9. 9. 12:07
728x90

 

나의 코드 (오답)

import sys

a,b,c = map(int,sys.stdin.readline().split())
count = 0
if b >= c:
    count -= 1
else:
     while True:
         count += 1
         if a + b * count < c * count:
             break
             
print(count)

-> 아마 대다수의 사람들이 이런식으로 코드를 짰을 거라고 생각한다. 브론즈 4문제임에도 불구하고 정답률이 25%밖에 안되는 굉장히 난해한 문제이다. 이런식으로 코드를 짜면 무조건 시간초과 판정이난다. 그렇다면 우리는 무엇을 해야할까? a,b,c 가 21억이하의 자연수인 범위에서는 반복문을 돌면서 찾는것이 아닌 일반식을 찾아야 한다는 것이다. 

a + b * count < c * count 식을 잘보자. count로 정리할 수 있다. 정리하면 a/(c-b) < count 가 된다. 즉 count 는  a/(c-b) 보다 크면 된다는 말이다. 그럼 a/(c-b) 에다가 +1 만 해주어 카운트값에 대입해 준다면 정답을 찾을 수 있다.

 

import sys

a,b,c = map(int,sys.stdin.readline().split())
count = 0
if b >= c:
    count -= 1
else:
    count = a//(c-b) + 1 #int(a/(c-b)) +1 도 가능

print(count)
728x90
Comments