알고리즘/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을 할당하여 처리했습니다.

혹시 다른 아이디어가 있으신분들은 공유 부탁드립니다.

 

제가 고민해볼 수 있게되는 댓글은 저를 성장시킵니다.