반응형
https://www.acmicpc.net/problem/2869
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
처음 실패한 코드
A, B, V = map(int, input().split()) # A 올라가는 거리 B 미끄러지는 거리 V 나무 길이
day = 0
distance = 0
while True:
day += 1
distance += A
if distance >= V:
break
distance -= B
print(day)
답은 나오지만 시간 초과로 실패한 코드다
A,B,V는 1,000,000,000 라... while이 최대 999,999,999번? 까지 돌 수도 있다... 장수 달팽이
계산으로 풀어야 한다.
최종코드
A, B, V = map(int, input().split()) # A 올라가는 거리 B 미끄러지는 거리 V 나무 길이
day = 0
if (V-A) % (A-B) == 0:
day = (V - A) // (A - B) + 1
else:
day = (V - A) // (A - B) + 2
print(day)
마지막 날은 미끄러지지 않으니깐 나무 길이에서 하루 올라가는 거리만큼을 뺀다
그리고 올라가는 만큼 나눠준다
+1을 해준건 첫날의 카운트가 0이 아니라 1이어야 하기 때문,
+2를 해준건 나무길이 / 올라가는거리 했을 때 소수점이 나오면 올림을 해줘야하기 때문이다.
반응형
'study > 백준' 카테고리의 다른 글
[백준] 2775. 부녀회장이 될테야 : python (0) | 2021.09.24 |
---|---|
[백준] 10250. ACM호텔 : python (0) | 2021.09.24 |
[백준] 4153번 직각삼각형 : python (0) | 2021.09.17 |
[백준] 3009번 네 번째 점 : python (0) | 2021.09.17 |
[백준] 1085번 직사각형에서 탈출 : python (0) | 2021.09.17 |