반응형
문제
https://www.acmicpc.net/problem/2869
풀이
낮에는 A미터 올라가고, 밤에는 B미터 미끄러진다.
주의해야 할 점이 A미터를 올라갔을 때, 정상에 올라갔다면 미끄러지지 않는다.
while문을 통해서 구할 수 있겠지만, 이 문제는 시간제한이 0.15초 입니다.
또한 A, B, V의 범위가 (1 ≤ B < A ≤ V ≤ 1,000,000,000) 이므로,
A = 2, B = 1, V = 1,000,000,000 이라면... 약 10억번의 연산을 수행하는 while문으로는 시간안에 해결할 수 없을 것입니다.
그렇다면 수학적으로 한 번 접근해 봅시다.
구하려고 하는 해를 day라고 설정하고, 식을 적어봅시다.
처음에는 $day = V / (A - B)$ 라고 생각했었습니다.
하지만, 정상에 도달한다면 미끄러지지 않으므로, 맨 처음부터 V에서 B를 빼준 값을 구해줘야 합니다.
그래서 식은 $day = (V - B) / (A - B)$가 될 것입니다.
주의해야할 점은 실수 자료형으로 계산을 해주고 그 값을 올림 처리를 해줘야 합니다.
올림처리는 ceil() 메서드를 사용할 수 있습니다.
소스코드
후기
수학식을 구한다면 수학식만 적용해주면 쉽게 풀 수 있는 문제인 것 같습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2775 부녀회장이 될테야 (Swift) (0) | 2023.01.24 |
---|---|
[BOJ] 백준 10250 ACM 호텔 (Swift) (0) | 2023.01.18 |
[BOJ] 백준 1193 분수찾기 (Swift) (0) | 2023.01.15 |
[BOJ] 백준 2292 벌집 (Swift) (0) | 2023.01.10 |
[BOJ] 백준 1712 손익분기점 (Swift) (0) | 2023.01.04 |