문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
--------------------- 풀이 ---------------------
처음에는 쉬운문제네? 하고 풀어봤다. 하지만 역시 한번에 풀리는 적이 없는것같다.
시간초과가 뜨는 것을 보고 이것 저것 고쳐보려했지만 결과는 바뀌지 않았다.
a, b, v = map(int,input().split())
total = 0
day=0
while total<v:
total+=a
day+=1
if total>=v:
break
total-=b
print(day)
시간초과가 걸리는 코드다. while문이 없어야 한다는 것을 1시간만에 파악하고
조건 정리
1. 코드 실행 시간제한 0.15초(추가시간 없음)
2. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 막대기가 제일 길고, 올라가는 길이가 길고 , 미끄러지는 길이가 가장 짧다.(자연수)
import math
a, b, v = map(int,input().split())
print(math.ceil((v-b)/(a-b)))
day = (v-b) / (a-b) 다.
ex) 4.2 = 5일이다
따라서 math.ceil을 이용해 올림을 했다.
출처
'알고리즘' 카테고리의 다른 글
| BFS란? (BFS기본, 송아지찾기 문제) (0) | 2022.01.11 |
|---|---|
| 백준) 4948번 베르트랑 공준 .python (0) | 2021.12.08 |
| 백준) 2839번 설탕배달 .python (0) | 2021.12.08 |
| 백준) 10250번 ACM 호텔 .python (0) | 2021.12.08 |
| 백준) 1011번 Fly me to the Alpha Centauri .python (0) | 2021.12.07 |