【JavaScript】CodilityのLesson3-1解答例


背景

Codilityというプログラミング学習サイトのLesson2「FrogJmp」を解いた。


問題内容

「地点Xにいるカエルが地点Yに行くまでに何回ジャンプする必要があるか求めよ。ただし、1回のジャンプで進む距離はDとする」という問題。


コードサンプル(解答例)

コメント欄のほうを参考にしてください!

(単純な解答でした……猛反省)

※正しい答えは出力するが、計算が遅くパフォーマンス面で怒られた。

1. X + i * DY以上になったらループを抜ける

2. ループを抜けた際のiが答え

function solution(X, Y, D) {

var result;
for (var i = 0; ; i++) {
if (X + (i * D) >= Y) {
result = i;
break;
}
}
return result;
}


コードサンプルその2

while文使ってもパフォーマンス面でダメでした…

function solution(X, Y, D) {

// write your code in JavaScript (Node.js 8.9.4)
var result = 0;
while (X + D * result < Y) {
result++;
}
return result;
}

結果は以下の画像の通り

image.png


感想

このLessonとLesson2-2を解いて思ったのだが、for文を使わない形で書かないと、パフォーマンス面の基準を満たさないようである。

以前のLessonの記事へのコメントを参考にしつつ、パフォーマンス面の問題もクリアしていかねば…