코딩테스트##008 FrogJmp

A Kind Dev·2023년 2월 1일
0

코딩테스트

목록 보기
8/19

문제

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.

For example, given:

X = 10
Y = 85
D = 30
the function should return 3, because the frog will be positioned as follows:

after the first jump, at position 10 + 30 = 40
after the second jump, at position 10 + 30 + 30 = 70
after the third jump, at position 10 + 30 + 30 + 30 = 100
Write an efficient algorithm for the following assumptions:

  • X, Y and D are integers within the range [1..1,000,000,000];
  • X ≤ Y.

(Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.)


나의 풀이

풀이 1 --> 44% (성능 이슈)

class Solution {
    public int solution(int X, int Y, int D) {
        
        if (X == Y) {
            return 0;
        }

        int count = 0;
        while (Y > X) {
            X += D;
            count++;
        }

        return count;
    }
}

풀이 2 --> 100%

class Solution {
    public int solution(int X, int Y, int D) {
        
        if (X == Y) return 0;

        int count = 0;
        int distance = Y - X;
        if (distance % D > 0) {
            count = (distance / D) + 1;
        } else {
            count = distance / D;
        }

        return count;
    }
}

check 1 : 무조건 반복문으로 풀겠다는 접근을 버리자

profile
친절한 개발자

0개의 댓글