티스토리 뷰

접근법
달팽이가 하루에 올라갈 수 있는 높이는 A - B 미터이다.
하지만 중요한 점은, A높이만큼 올라간 뒤에 정상이라면 더 이상 미끄러지지 않는다는 것이다.
그렇기 때문에 하루에 올라갈 수 있는 높이를 단순하게 (A - B) 로 일반화할 수 없다.
따라서 이 부분만 조금 생각해보면 어떻게 접근해야할지 감을 잡을 수 있다.
-
V - A = 마지막 날 전까지 올라가야 할 높이이다. ( H로 명명 )
-
H / (A - B) 의 몫 = 마지막 전날까지 올라가기까지 걸리는 날짜
의 나머지 = 마지막 전날까지 올라간 뒤 남은 높이 (이 수치는 A보다는 크고 A-B보다는 작을 것이다.)
-
나머지가 0 일 때
정확히 ( A - B ) 의 값으로 나누어 떨어졌다는 의미는 곧 마지막 날에 A높이만큼만 더 올라가면 된다는 뜻이다.
따라서, 몫의 값에 + 1을 해주면 원하는 답을 구할 수 있다.
-
그 외 나머지가 0이 아닐 때
여기서 나머지 값에 A 를 더해주어야 실제 남은 높이를 구할 수 있다.
따라서 A < 남은 높이 < A + (A-B) 라는 것을 알 수 있다. 여기서 잘 생각해보자.
남은 높이에서 마지막 날에 올라갈 A수치를 빼보면,
0 < 남은 높이 < (A-B) 이다. 즉, (A-B)만큼 한번 더 올라가야 하는 것을 알 수 있다.
그렇기 때문에 나머지가 0이 아닐 경우에는 (A-B)만큼 한번, 그리고 마지막에 A만큼 한번 더 올라가야 한다!
따라서, 몫의 값에서 +2를 해주면 원하는 답을 구할 수 있다.
-
V = 50 , A = 4 , B = 1 을 예시로 생각해보자.
전체 높이에서 (A-B) 만큼을 빼주면 H = 47 이다. 이 값을 (A-B)로 나누어 주면, 몫 = 15, 나머지 = 2 이다.
여기서 실제 남은 높이는 5로써 A값인 4보다는 크고 (A-B)에 A를 더한 값인 7보다는 작다. A(4) < 남은 높이(5) < (A-B) + A (7)
남아있는 높이 5를 생각해보면 하루에 올라갈 수 있는 높이은 3을 올라간 뒤에도 2라는 높이가 남기 때문에 하루만큼을 더 올라가야 정상에 도달할 수 있다.
풀이
A, B, V = map(int,input().split(' '))
day, remain = divmod((V - A), (A - B))
if remain == 0:
print(day + 1)
else :
print(day + 2)
'프로그래밍 > BOJ' 카테고리의 다른 글
| 백준 #2775: 부녀회장이 될테야 (0) | 2020.01.19 |
|---|---|
| 백준 #10250: AMC 호텔 (0) | 2020.01.17 |
| 백준: #단계별로 풀어보기, 수학 (1) (0) | 2020.01.13 |
| 백준: #단계별로 풀어보기, 문자열 (2) (0) | 2020.01.12 |
| 백준: #단계별로 풀어보기, 문자열 (1) (0) | 2020.01.12 |