JavaScriptでのBill DivisionのHackerrank問題の解法


Bill Division問題は、参加者がレストランでの請求を公平に分割する方法を見つけることを目的としています。具体的には、参加者の数と各参加者の注文リスト、正しい請求金額、請求から除外される参加者の注文番号が与えられます。問題の目標は、請求金額を正確に分割するために、除外される注文を除いた参加者の注文の合計金額を計算することです。

以下に、Bill Division問題のJavaScriptの解法を示します。

function bonAppetit(bill, k, b) {
  // 除外される注文の金額を計算
  const excludedItem = bill[k];
  // 除外される注文を除いた参加者の注文の合計金額を計算
  const billWithoutExcludedItem = bill.reduce((sum, item) => sum + item, 0) - excludedItem;
  // 参加者が支払うべき金額を計算
  const fairShare = billWithoutExcludedItem / 2;
  if (fairShare === b) {
    console.log("Bon Appetit");
  } else {
    console.log(b - fairShare);
  }
}
// 使用例
const bill = [3, 10, 2, 9]; // 各参加者の注文金額
const k = 1; // 除外される注文の参加者番号
const b = 7; // 正しい請求金額
bonAppetit(bill, k, b); // 出力: 5

上記の解法では、bonAppetitという関数を定義し、与えられたパラメータに基づいて請求金額を計算しています。関数内で行う主な処理は以下の通りです。

  1. 除外される注文の金額を計算します。
  2. 除外される注文を除いた参加者の注文の合計金額を計算します。
  3. 参加者が支払うべき金額(請求金額を2で割った金額)を計算します。
  4. 参加者が支払うべき金額と正しい請求金額を比較し、結果を出力します。

以上が、JavaScriptを使用してHackerrankのBill Division問題を解く方法の例です。この解法を参考にして、他の問題にも応用してみてください。