For Programmer
백준 1712번 파이썬 문제풀이(기본수학 - 손익분기점) 본문
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
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1193번 파이썬 문제풀이(기본수학 - 분수찾기) (0) | 2021.09.09 |
---|---|
백준 2292번 파이썬 문제풀이(기본수학 - 벌집) (0) | 2021.09.09 |
백준 1316번 파이썬 문제풀이(문자열:그룹 단어 체커) (0) | 2021.09.08 |
백준 2941번 파이썬 문제풀이(문자열:크로아티아 알파벳) (0) | 2021.09.08 |
백준 5622번 파이썬 문제풀이(문자열:다이얼) (0) | 2021.09.08 |
Comments