알고리즘/Codility
Codility lesson3_1 - FrogJmp
내이름은 킹햄찌
2021. 8. 15. 13:00
요약
개구리가 X의 위치에서 점프를하여 Y이상의 거리에 가야하는데 점프거리는 D입니다.
X<=Y 입니다.
아이디어
1. Y에서 X의 차이가 개구리가 이동할 거리가 된다. 고려할 것은 두가지로 보인다.
2. X == Y인 경우 : Y이상의 거리를 가야하기때문에 점프하지 않아도 됨
3. Y == D인 경우 : 한번만 점프를 하더라도 Y이상이 됨
코드
int solution(int X, int Y, int D) {
// write your code in C++14 (g++ 6.2.0)
int cnt = 0;
int dist = Y - X;
if (D < Y)
cnt = dist % D == 0 ? dist / D : dist / D + 1;
else if (D == Y)
cnt = 1;
return cnt;
}
결과는
직관적으로 작성했는데 운이 좋게 1트만에 통과네요.
간단하게 코드설명을 하자면 첫번째 케이스인 X와 Y가 같은 경우 dist가 0이기때문에 D로 나누더라도 0이기때문에 if문에서 이 케이스를 처리했다고 보시면되고, 두번째 케이스는 else if에서 cnt에 1을 할당하여 처리했습니다.
혹시 다른 아이디어가 있으신분들은 공유 부탁드립니다.
제가 고민해볼 수 있게되는 댓글은 저를 성장시킵니다.