에디의 우당탕탕 코딩공장

[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;
    }
}

 

'Coding Test > Codility' 카테고리의 다른 글

[Lesson 3] TapeEquilibrium  (0) 2024.02.21
[Lesson 3] PermMissingElem  (0) 2024.02.20
[Lesson 2] OddOccurrencesInArray  (0) 2024.02.20
[Lesson 2] Cycle Rotation  (1) 2024.02.20
[Lesson 1] Binary Gap  (0) 2024.02.20

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기