https://www.acmicpc.net/problem/2869
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제 입력 1 복사
2 1 5
예제 출력 1 복사
4
예제 입력 2 복사
5 1 6
예제 출력 2 복사
2
예제 입력 3 복사
100 99 1000000000
예제 출력 3 복사
999999901
달팽이가 하루에 올라가는 양은 A-B 이다
(A-B)+(A-B)+(A-B)... 이런식으로 올라가고, 마지막날은 밤이없고 낮에 끝난다! 그러므로 마지막날은 (V-A) 값이 들어간다.
전체길이 V-A // (A-B) 를 하고 , 만약 (V-A) % (A-B)를 했을 때의 나머지가 0이 아니면 한번더 올라가야하므로 하루 day를 추가해준다. 그리고 마지막날(A를 뺀값)을 고려하여 day를 하루 더해준다.
A, B, V = map(int, input().split())
# 마지막 날을 제외한 높이-> 마지막날은 잠을 안잠 낮에 끝남
remaining_height = V - A
# 하루에 올라가는 순수한 높이
daily_height = A - B
# 걸리는 일수 계산
days = remaining_height // daily_height
# 나머지가 있다면 추가로 하루가 필요
if remaining_height % daily_height != 0:
days += 1
# 마지막 날 추가
days += 1 #-A 계산에대한 1더함
print(days)
코드를 짜면서 반례를 찾는게 생각보다 어렵다. 백준에 나와있는 예제로만 입력했을 때 나오면 된다고 생각했기 때문이다. (회사 다니면서 코드 답 조작해서 짜기(?)에 습관이 돼버렸다) 시야를 넓혀야겠다.
'코딩테스트' 카테고리의 다른 글
백준 10816번 파이썬 - 숫자카드 2 (0) | 2024.04.08 |
---|---|
백준 24313번 파이썬 - 알고리즘 수업 - 점근적 표기 1 (0) | 2024.04.02 |
백준 2745번 파이썬 - 진법 변환 (0) | 2024.03.22 |
백준 2566번 파이썬 -최댓값 (1) | 2024.03.22 |
백준 2941번 파이썬 -크로아티아 알파벳 (0) | 2024.03.21 |