땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
a 미터 낮
b 미터 밤
v 미터 나무막대
v -= a
if( v < 0 ) break;
v += b 를 매 반복마다 실행
왜 정답률이 30퍼지?
namespace SongE
{
public class Program
{
static void Main(string[] args)
{
int[] ints = Array.ConvertAll(Console.ReadLine().Split(), s => int.Parse(s));
int a = ints[0], b = ints[1], v = ints[2];
int day = 0;
while (true)
{
v -= a;
day++;
if (v <= 0) break;
v += b;
}
Console.WriteLine(day);
}
}
}
인데, 내 생각엔 많이 반복할수록 0.25초만에 실행이 되지 않을 것 같아 제출하지 않고 찾아보았다.
달팽이는 하루에 (a-b) 미터를 올라간다. 근데 달팽이가 목표지점에 도달한 날에는 미끄러지면 안되니까, 총 (v-b) 미터를 올라가면 된다. (v-b)가 (a-b)로 나눠떨어지지 않으면 +1일 하면 된다.
namespace SongE
{
public class Program
{
static void Main(string[] args)
{
int[] ints = Array.ConvertAll(Console.ReadLine().Split(), s => int.Parse(s));
int a = ints[0], b = ints[1], v = ints[2];
int day =((v - b) % (a - b) == 0 )? ((v-b) / (a-b)) : ((v-b) / (a-b) + 1);
Console.WriteLine(day);
}
}
}