문제
작성한 코드
import sys, math
input = sys.stdin.readline
A, B, V = map(int, input().split())
day = (V - B) / (A - B)
print(math.ceil(day))
- 달팽이가 하루에 올라가는 길이 : A-B
- 달팽이가 총 올라가는 길이 : day * (A-B)
- 달팽이가 올라가야 하는 길이 : V-B
(정상에 올라가서 미끄러져 내려가는 것을 고려해서 미리 B만큼 빼줬다고 생각하면 된다.)
[식]
(V-B) = day * (A-B)
→ 정리 : day = (V-B) / (A-B)
→ 소수로 나오는 경우가 있어, 올림을 해줘야 한다.
- sys.stdin.readline을 input에 할당하여 사용한다.
- input()으로 문자를 입력받고, split()으로 구분한 뒤, int형으로 형변환하여 map으로 A, B, V에 각각 할당한다.
- 위에 정리한 식을 사용하여 달팽이가 막대를 모두 올라가는 데에 걸리는 일 수를 구한다.
- math 모듈을 import 해주어 print()할 때, math.ceil()을 사용하여 day의 값을 올림처리 해주어 출력한다.
cf.) 처음에 반복문을 사용해서 코드를 작성했는데, 시간 초과로 실패하였다. 이후 단순 식으로 해결해야 한다는 것을 알게 되었다.
'💻 코딩테스트 > 백준' 카테고리의 다른 글
백준 [2775] - 부녀회장이 될테야 (0) | 2022.08.25 |
---|---|
백준 [10250] - ACM 호텔 (0) | 2022.08.25 |
백준 [1193] - 분수찾기 (0) | 2022.08.24 |
백준 [2292] - 벌집 (0) | 2022.08.24 |
백준 [1712] - 손익분기점 (0) | 2022.08.23 |