백준 코테 문제 2869번
백준 2869번 : 달팽이는 올라가고 싶다
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제
예제 입력1 | 예제 출력1 |
---|---|
2 1 5 | 4 |
예제 입력2 | 예제 출력2 |
---|---|
5 1 6 | 2 |
예제 입력3 | 예제 출력3 |
---|---|
100 99 1000000000 | 999999901 |
풀이
이 문제는 달팽이가 나무 막대를 올라가는데 걸리는 날을 구하는 문제이다. 이 달팽이는 하루에 올라갈 수 있는 높이가 정해져있고 밤이 되면 다시 일정 미터를 미끄러져 내려온다고 한다. 나무 막대의 높이 = V 달팽이가 낮에 올라갈 수 있는 높이 = A 밤에 다시 미끄러져 내려오는 높이 = B
즉 달팽이가 하루동안 올라갈 수 있는 높이 A-B 또 올라가야할 높이는 V-B
달팽이가 나무 막대를 올라가는데 걸리는 시간은 (V-B)/(A-B)
import math
A,B,V = map(int,input().split())
day=(V-B)/(A-B)
만일 몫이 정수로 떨어진다면 나무 막대의 높이만큼 딱 도달한 것이다. 하지만 정수가 아닌 소수점으로 나왔다면 하루를 더 더해줘야 한다.
예를 들어 하루에 1.5일이 걸렸다고 하자 그렇다면 하루하고 0.5일이 더 걸렸다는 뜻이므로 2일이 되는것이다.
그렇다면 소수점을 반올림을 해서 출력 해줘야한다. math모듈 중 ceil를 이용한다.
print(math.ceil(day))
정답
import math
A,B,V = map(int,input().split())
day=(V-B)/(A-B)
print(math.ceil(day))
새로 알게 된 점
실수를 올림해서 정수로 출력되는 ceil함수를 알게 되면서 math모듈을 알게 되었다.
먼저 math 모듈은 수학과 관련된 다양한 함수들과 상수들이 정의되어 있다.
math을 사용하려면
import math
하여 사용할 수 있다.
다음으로 간단하게 어떤 것들이 있는지 알아보자
- math.ceil()
ceil함수는 실수를 입력하면 올림하여 정수로 반환해주는 함수이다.
만약 정수를 입력하게 된다면 아무런 변화없이 정수로 반환되게 될것이다.
아래는 간단한 예제이다.
>>>math.ceil(3.14) 4 >>>math.ceil(5.187) 6 >>>math.ceil(-4.23) 4 >>>math.ceil(5) 5 >>>math.ceil(-5) -5
- math.floor()
floor함수는 ceil함수의 반대이다. 실수를 내림하여 정수로 반환하는 함수이다.
floor의 성격은 ceil와 똑같다.
아래는 간단한 예제이다.
>>>math.floor(3.14) 3 >>>math.floor(5.187) 5 >>>math.floor(-4.23) -5 >>>math.floor(5) 5 >>>math.floor(-5) -5
댓글남기기