a, b, v = map(int, input().split())
height = 0
day = 0
while height < v-a:
height += a-b
day += 1
print(day+1)
a, b, v 를 인풋으로받고 반복문을 돌며
달팽이의 높이를 매일마다 a-b씩 더해줬다.
높이가 v-a보다 작을 경우에만 와일문이 작동하도록 조건을 걸어줬다.
하루가 온전 히 지날 때 마다 달팽이의 높이는 a-b씩 증가하게 된다.
달팽이의 높이가 v가 된 순간은 그 날에 a만큼 오르고 b만큼 내려간 순간이 아니다.
a만큼 오른 것만 계산한 순간이다.
따라서 마지막날 달팽이의 높이 height == (a-b)day+a가 된다.
(a-b)day에서 +a를 한 값이 day에 하루를 더한값 이기 때문에 print(day+1)을 해줬다.
while로 풀이 한 결과 값이 작을 경우는 상관없었으나 값이 커지면 커질 수록 결과가 출력되기까지 시간이 많이 소요되었다.
구글링 결과 조건문이나 반복문 없이도 바로 값을 구할 수 있다고 해서 수식을 써봤다.
day를 달팽이가 v에 도달한 날 이라고 정의하면 다음과 같이 나온다.
v = day(a) - (day - 1)*b (마지막 날은 미끄러질 필요가 없다.)
v = day(a-b)+b
v-b = day(a-b)
day = v-b/a-b
하지만 이렇게 바로 day를 출력하면 실수 값이 나올 때가 있는데 실수 값이 나오는 경우는 하루가 더 지나야 달팽이가 원하는 위치까지 갈 수 있기 때문에 올림을 사용하여 출력한다.
import math
a, b, v = map(int, input().split)
day = (v - b) / (a - b) # 정리되어 나온 day의 값. 정수 또는 실수
print(math.ceil(day)) # import math할 시 쓸 수 있는 올림! math() 괄호 안의 수를 올림한다.
정답 제출을 위한 코드는 정말 짧다... 오랜 시간 고민하고 노력한게 고작 4줄 만으로 가능하다니 놀랍다!
'알고리즘' 카테고리의 다른 글
백준 10828 스택 [개인적인 풀이과정] (0) | 2021.06.18 |
---|---|
백준 11651 좌표 정렬하기 2 [개인적인 풀이 과정] (0) | 2021.06.18 |
백준 2839 설탕 배달 [지극히 개인적인 풀이 과정] 실패의 연속 (0) | 2021.06.17 |
백준 2941 크로아티아 알파벳 [문제 풀이] (0) | 2021.06.16 |
백준 1316 그룹 단어 체커[개인적인 풀이 과정] (0) | 2021.06.16 |