반응형
백준 2869번 달팽이는 올라가고 싶다
https://www.acmicpc.net/problem/2869
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
문제 유형
수학
풀이 방법 도출
달팽이는 낮 동안 A 미터를 올라가고, 밤에 B 미터를 미끄러집니다. 따라서 하루에 실질적으로 올라가는 거리는 A - B 미터입니다.
마지막 날에는 미끄러지지 않기 때문에 V - A 까지 이동하면 그 다음날 바로 도착할 수 있습니다.
- 정상에 도달하는 마지막 날을 제외한 거리를 (A - B) 로 나누어 일수를 계산합니다. days = (V - B) / (A - B)
- 이때 나누어진 결과가 정수라면 그대로 사용하고, 소수점이 있다면 +1을 합니다.
시간 복잡도
- O(1)
핵심 코드 삽입 및 설명
import sys
def calculate_days(A: int, B: int, V: int) -> int:
# 정상에 도달하는 날에는 미끄러지지 않으므로 V - A를 먼저 계산
days = (V - B) / (A - B)
return int(days) if days == int(days) else int(days) + 1
# 입력 받기
A, B, V = map(int, sys.stdin.readline().split())
# 결과 출력
print(calculate_days(A, B, V))
반응형
'Study > 코딩 테스트' 카테고리의 다른 글
[백준] 1932번 정수 삼각형 해설 및 풀이 (Python) (0) | 2025.03.13 |
---|---|
[백준] 2798번 블랙잭 해설 및 풀이 (Python) (0) | 2025.03.13 |
[백준] 1753번 최단경로 해설 및 풀이 (Python) (0) | 2025.03.11 |
[백준] 11725번 트리의 부모 찾기 해설 및 풀이 (Python) (0) | 2025.03.11 |
[백준] 7576번 토마토 해설 및 풀이 (Python) (0) | 2025.03.10 |