나는 다음과 같이 문제를 분석했다.
// Y - X를 하고 값을 저장한다.
// 저장된 값을 D로 나눈다.
// 나눈 값을 double형으로 형변환하여 저장한다.
// Math.ceil()을 이용해 올림한다.
// 결과를 반환한다.
class solution{
public static int solution(int X, int Y, int D){
int n = Y - X;
double m = (double) n / D;
int answer = (int) Math.ceil(m);
return answer;
}
}
while (X < Y) {
X += D;
if (X >= Y) {
answer = X;
break;
}
}
처음에는 위와 같이 반복을 수행하며 X에 D를 누적하는 방법으로 수행하려 했다. 하지만 이렇게 수행 할 경우 시간복잡도는 O((Y-X) / D)가 된다. 이 말은 입력 값에 따라 연산 횟수가 달라질 수 있다는 것이다.
이러한 이유로 시간복잡도가 고정되어 있는 구현코드를 사용하였다.