[Lesson 3] FrogJmp
by 브이담곰
문제
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: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–2024 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
X,Y,Z 의 범위가 10억이기 때문에, 단순 for문으로는 힘들다.
계산식으로 일반화 하여, 풀이를 해야한다.
경우의 수를 3가지로 나누어 결과 값을 리턴한다.
1. X와 Y가 같을 경우
2. 최종 위치가 Y 값과 같을 경우
3. Y 보다 더 멀리 도착할 경우
풀이
// you can use includes, for example: // #include <algorithm> // you can write to stdout for debugging purposes, e.g. // cout << "this is a debug message" << endl; int solution(int X, int Y, int D) { // Implement your solution here if( X == Y ) return 0; if((Y-X)% D == 0) return (Y-X)/ D; else { return ((Y-X)/ D) + 1; } }
블로그의 정보
농담곰담곰이의곰담농
브이담곰