문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
정답비율
25.882%
A, B, V = map(int,input().split())
T = V-A
if T%(A-B) == 0 :
d = T/(A-B) + 1
else :
d = T//(A - B) + 2
print(int(d))
처음 문제를 봤을 때, 왜 이렇게 정답 비율이 작은지 의문이었다. 왜냐하면 문제를 보자마자 while문으로 풀면 쉽게 풀릴 것 같았기 때문이다.
그러나 이 의문은 while문으로 풀고 예제 입력3을 넣자마자 해결되었다. 숫자가 커지면 루프를 너무 오래 돈다는 단점이 있었다. 그래서 방정식과 같은 방식으로 접근해야한다는 것을 깨달았다.
먼저 첫째날은 A만큼 오르고 끝이기 때문에, 둘째날 부터 계산하기로 하였다. T라는 변수에 둘째날부터 오르게 될 높이를 담아주었다.
둘째날부터 오를 높이가 A-B에 나누어 떨어지면 그 몫과 첫째날을 더하면 답이 되었다.
둘째날부터 오를 높이가 A-B에 나누어 떨어지지않으면 몫을 포함하여 하루를 더 올라야한다는 의미가 된다. 그래서 총 2를 더하게 되었다.
참고
'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글
<수학1> 2775번 부녀회장이 될테야 with 파이썬 (0) | 2020.12.18 |
---|---|
<수학1> 10250번 ACM 호텔 with 파이썬 (0) | 2020.12.16 |
<수학1> 1193번 분수찾기 with 파이썬 (0) | 2020.12.11 |
<수학1> 2292번 벌집 with 파이썬 (0) | 2020.12.09 |
<수학 1> 2839번 설탕 배달 with 파이썬 (0) | 2020.12.07 |