2869번: 달팽이는 올라가고 싶다.
문제 )
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력 :
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
풀이)
처음에 만들었던 풀이이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
num = input()
num = num.split(" ")
num = list(map(int, num))
# A:등반(num[0]), B:미끌(num[1]), V:높이(num[2])
answer = 0
for i in range(1, num[2]+1):
answer += num[0]
if answer >= num[2]:
print(i)
break
else:
answer -= num[1]
|
cs |
하지만 이 방법으로는 1부터 막대의 길이만큼 계속해서 반복되므로,
막대의 길이가 길어지고 하루에 오르는 길이가 적어질 수록 계산할 양이 많아지는 단점이 발생했다.
그래서 다른 방법을 찾아보고자 했다.
그래서 만든 풀이가 이것이다.
1
2
3
4
5
6
7
8
9
|
import math
num = input()
num = num.split(" ")
num = list(map(int, num))
# A:등반(num[0]), B:미끌(num[1]), V:높이(num[2])
day = (num[2]-num[0])/(num[0]-num[1])
print(math.ceil(day+1))
|
cs |
뭔가 알고리즘이 아니라 수학으로 푼 느낌....
출처 : https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 10250번: ACM 호텔 (python) (0) | 2022.01.16 |
---|---|
[백준] 4153번: 직각삼각형 (python) (0) | 2022.01.16 |
[백준] 2839번: 설탕 배달 (python) (0) | 2022.01.15 |
[백준] 2798번: 블랙잭 (python) (0) | 2022.01.15 |
[백준] 2775번: 부녀회장이 될테야 (python) (0) | 2022.01.12 |