Algorithm(알고리즘)/백준
14_백준 _2869번 파이썬 달팽이는 올라가고 싶다
반응형
처음에 Brute force 로 그냥 반복으로 했다가
입력값에 나무길이가 1억 있는걸 보고,, 바로 다시 짰다.
수학적으로 해결했다 하루 올라가는 길이 = 아침올라감 - 밤 내려감(: oneday_distance = A - B) 으로
도착 전날까지 걸린 날짜 = (전체 길이 - 낮에 올라가는 길이)//하루 올라가는 길이 : (V - A) // oneday_distance
남은 거리 left_distance = V - count * oneday_distance
이제 남은 거리만 while 문으로 if 남은 거리 - 올라감 < 0: 도착 반복문을 짜주면 끝!
-풀이
A, B, V = list(map(int, input().split()))
# 하루 올라가는 양
oneday_distance = A - B
count = 0 # 날짜 카운트
# 도착 전날까지 걸린 날짜
count = (V - A) // oneday_distance
# print(count,'전날 까지의 날짜')
# 남은 거리
left_distance = V - count * oneday_distance
# print(left_distance,'left_distance')
while True:
left_distance -= A # 올라간 길이
count += 1
if left_distance < 1:
break
left_distance += B # 미끄러진 길이
print(count)
'''
# 입력
2 1 5
5 1 6
100 99 1000000000
# 출력
4
2
999999901
'''
-brute force 로 짠 코드 (참고용)
# V 값이 1000000000 인 경우 시간초과
A, B, V = list(map(int, input().split()))
tree = list(range(V))
# 하루 올라가는 길이
distance = 0
count = 0 # 날짜 카운트
while True:
distance += A # 올라간 길이
count += 1
if distance >= V:
break
distance -= B # 미끄러진 길이
print(count)
반응형
'Algorithm(알고리즘) > 백준' 카테고리의 다른 글
16_백준 _2609번 파이썬 최대공약수와 최소공배수 (0) | 2021.06.20 |
---|---|
15_백준 _1037번 파이썬 약수 (0) | 2021.06.17 |
13_백준 _1436번 파이썬 영화감독 숌 (0) | 2021.06.17 |
12_백준 _4948 번 파이썬 베르트랑 공준 (0) | 2021.06.17 |
11_백준 1011번 파이썬 Fly me to the Alpha Centauri (0) | 2021.06.17 |
댓글