JavaScriptでのHackerrank問題「Flatland Space Stations」の解法


問題の解法にはいくつかのアプローチがありますが、ここではシンプルで簡単な方法を紹介します。具体的な手順は以下の通りです。

  1. 入力値を処理します。与えられる入力は都市の数と宇宙ステーションの配置が含まれています。例えば、次のような形式です:

    5 2
    0 4

    上記の例では、都市の数は5であり、宇宙ステーションは都市0と都市4に配置されています。

  2. 都市の数だけの配列を作成し、初期値をInfinityなどの大きな値に設定します。これは都市から最も遠い宇宙ステーションまでの距離を表すためです。

  3. 宇宙ステーションの位置を配列に反映させます。宇宙ステーションの位置には0などの特定の値を代入し、それ以外の都市の位置にはInfinityのままにします。

  4. 都市ごとに、宇宙ステーションまでの最短距離を計算します。これにはMath.abs()関数などを使用して、都市の位置と宇宙ステーションの位置の差を求めます。

  5. 最も遠い宇宙ステーションまでの距離が最大となる都市を特定します。これにはMath.max()関数を使用し、最大値を更新していきます。

  6. 最終的な結果を出力します。最も遠い宇宙ステーションまでの距離が最大となる都市が求められます。

以上がシンプルなアプローチです。実際のコード例を以下に示します。

function flatlandSpaceStations(n, c) {
  let maxDistance = 0;
  for (let i = 0; i < n; i++) {
    let minDistance = Infinity;
    for (let j = 0; j < c.length; j++) {
      const distance = Math.abs(i - c[j]);
      if (distance < minDistance) {
        minDistance = distance;
      }
    }
    if (minDistance > maxDistance) {
      maxDistance = minDistance;
    }
  }
  return maxDistance;
}
// 使用例
const cities = 5;
const stations = [0, 4];
const result = flatlandSpaceStations(cities, stations);
console.log(result); // 出力: 2

上記のコードは、都市の数と宇宙ステーションの配置を入力として受け取り、最も遠い宇宙ステーションまでの距離が最大となる都市を返します。この例では、都市の数が5であり、宇宙ステーションが都市0と都市4に配置されているため、最も遠い宇宙ステーションまでの距離は2となります。

以上が「Flatland Space Stations」問題のシンプルな解法とコード例です。このブログ投稿では、以下のような内容で解説することができます。

はじめに、Hackerrankの「Flatland Space Stations」という問題についての解法とコード例を紹介します。この問題では、宇宙ステーションが配置された都市の中で、どの都市から宇宙ステーションまでの最短距離が最大となるかを求める必要があります。

問題の解法にはいくつかのアプローチがありますが、ここではシンプルで簡単な方法を紹介します。具体的な手順は以下の通りです。

  1. 入力値を処理します。与えられる入力は都市の数と宇宙ステーションの配置が含まれています。

  2. 都市の数だけの配列を作成し、初期値をInfinityなどの大きな値に設定します。これは都市から最も遠い宇宙ステーションまでの距離を表すためです。

  3. 宇宙ステーションの位置を配列に反映させます。

  4. 都市ごとに、宇宙ステーションまでの最短距離を計算します。

  5. 最も遠い宇宙ステーションまでの距離が最大となる都市を特定します。

  6. 最終的な結果を出力します。

以上がシンプルなアプローチです。具体的なコード例を以下に示します。

function flatlandSpaceStations(n, c) {
  let maxDistance = 0;
  for (let i = 0; i < n; i++) {
    let minDistance = Infinity;
    for (let j = 0; j < c.length; j++) {
      const distance = Math.abs(i - c[j]);
      if (distance < minDistance) {
        minDistance = distance;
      }
    }
    if (minDistance > maxDistance) {
      maxDistance = minDistance;
    }
  }
  return maxDistance;
}
// 使用例
const cities = 5;
const stations = [0, 4];
const result = flatlandSpaceStations(cities, stations);
console.log(result); // 出力: 2

上記のコードは、都市の数と宇宙ステーションの配置を入力として受け取り、最も遠い宇宙ステーションまでの距離が最大となる都市を返します。この例では、都市の数が5であり、宇宙ステーションが都市0と都市4に配置されているため、最も遠い宇宙ステーションまでの距離は2となります。