I have tried to work out the Frog Jump task on Codility. The algorithm for solving this is rather simple but the maximum score I am able to achieve is 55% (also 44% with modulus operations).

A small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to a position greater than or equal to Y. The small frog always jumps a fixed distance, D.

Count the minimal number of jumps that the small frog must perform to reach its target.

Write a function: class Solution { public int solution(int X, int Y, int D); } that, given three integers X, Y and D, returns the minimal number of jumps from position X to a position equal to or greater than Y.

public static int solution(int X, int Y, int D)
    int count = 0;

    if (X == Y)
        return 0;
        while (X < Y)
            X += D;
        return count;

I have read in a place that switch statements can outperform if conditions but couldn't find a way to make a switch statement out of this, also tried to get the answer recursively, but was only able to put down the base case..

Appreciate hints, help, suggestions at what should I look for to be optimal with this method.

  • 4
    \$\begingroup\$ Wouldn't this be return (int)Math.Ceiling((float)(Y - X) / D);? \$\endgroup\$ – Der Kommissar May 31 '19 at 20:26
  • \$\begingroup\$ It is.. I have definitely have to read thoroughly the Math class.. Thanks! \$\endgroup\$ – Kris May 31 '19 at 20:50
  • \$\begingroup\$ No problem, glad it helped. :) \$\endgroup\$ – Der Kommissar May 31 '19 at 20:52
  • \$\begingroup\$ @DerKommissar could you please explain in terms of time complexity why using Math.Ceiling is better in terms of if/else conditions? And also add your comment as an answers so I can mark it as such. Thanks again. \$\endgroup\$ – Kris Jun 1 '19 at 11:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.