[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 2869 : 달팽이는 올라가고 싶다(ceil())

스뇨잉 2022. 1. 9. 15:27
728x90
728x90

 

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

 

 

문제가 요구하는 방식 그대로, 달팽이의 행적을 쫒아... 코드를 작성했는데. 아무리 기다려도 예제3번 답 출력이 안되는 것....?

 

 

<틀린코드>

더보기
A, B, V = map(int, input().split())
high = 0
days = 1

while True:
    high = high + A

    if V <= high:
        print(days)
        quit()

    high = high - B
    days = days + 1

 

 

 

이대로 제출했다간 시간초과 나오겠다 싶어 코드 유형을 바꿔줬다.

달팽이고 뭐고 그냥 수학적 접근으로...^^

 

특별히 어려운 부분은 없고, 달팽이 문제의 함정만 잘 꿰뚫는다면 쉽게 풀 수 있는 문제이다.

만약 막대 높이가 10이고 하루에 5씩 오르지만 4만큼 미끄러지는 달팽이가 높이 5에 도달했다면,

하루만 더 오른다면 막대를 모두 오를 수 있다는 것. 굳이 도달했는데 미끄러지게 할 이유는 없음으로.

10 / (5-4) 과 같은 함정만 피하면 된다.

 

 

 

import math

A, B, V = map(int, input().split())
high = V - A

days = math.ceil(high / (A-B))

print(days + 1)

 

 

728x90
728x90