본문 바로가기

카테고리 없음

[BOJ] 백준 2869 파이썬 - 달팽이는 올라가고 싶다

728x90

달팽이가 입력된 v 만큼의 거리를 하루동안 a-b 만큼 이동할 때 걸리는 총 시간을 구하는 문제입니다.

 

import sys
a, b, v = map(int, sys.stdin.readline().split())

일단 시간을 최대한 줄여주기 위해 import sys를 사용했습니다 (안해도 상관X)

 

이 문제의 핵심은 경우의 수를 일일이 따져주는 것이 아니라

v <= (a - b)*n + a (n: 걸린 일 수)

를 n에 대하여 정리해주는 것 입니다.

 

해당 식을 n에 대하여 정리해주면 다음과 같이 됩니다.

n = (v-a)/(a-b) + 1

여기서 마지막 +1 은 움직이는 첫날도 하루로 세어주기 때문입니다.

 

그 이후 위의 식에 대한 경우를 두가지만 따져주면 됩니다.

 

1. 남은 길이가 딱 a만큼이라 b만큼 미끌어지기 전 도착하는 경우

2. 남은 길이가 a보다 짧아 올라가는 도중에 도착하는 경우

 

이를 코드로 표현하면 다음과 같이 됩니다.

if n % int(n) == 0:    
    print(int(n))
else:                 
    print(int(n) + 1)

 

[전체 코드]

import sys
a, b, v = map(int, sys.stdin.readline().split())

n = (v-a)/(a-b) + 1    
if n % int(n) == 0:     
    print(int(n))
else:                   
    print(int(n) + 1)

 

728x90