ITの基礎知識|ITパスポート・基本情報

【アルゴリズムとプログラミング】の記事一覧

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。

基本情報技術者 令和6年公開問題 科目Bの注意事項


問題

次のプログラム中の [  a  ] ~ [  c  ] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。

一度の注文で購入された商品のリストを,注文ごとに記録した注文データがある。表に,注文データの例を示す。

商品 x と商品 y とが同一の注文で購入されやすい傾向を示す関連度 $ L_{xy} $ を,次の式で計算する。

$ L_{xy} = (M_{xy} \times 全注文数) \div (K_x \times K_y) $

ここで,$ M_{xy} $ は商品 x と商品 y とが同一の注文で購入された注文数,$ K_x $ は商品 x が購入された注文数,$ K_y $ は商品 y が購入された注文数を表す。

表の例では,$ M_{AB} $ が 2,全注文数が 6,$ K_A $ が 4,$ K_B $ が 3 であるので,商品 A と商品 B の関連度 $ L_{AB} $ は,$ (2 \times 6) \div (4 \times 3) = 1.0 $ である。

手続 putRelatedItem は,大域変数 orders に格納された注文データを基に,引数で与えられた商品との関連度が最も大きい商品のうちの一つと,その関連度を出力する。

プログラムでは,商品は文字列で表し,注文は購入された商品の配列,注文データは注文の配列で表している。注文データには2 種類以上の商品が含まれるものとする。また,注文データにある商品以外の商品が,引数として与えられることはないものとする。

[プログラム]

大域: 文字列型配列の配列: orders ← {{"A", "B", "D"}, {"A", "D"}, {"A"},
                                     {"A", "B", "E"}, {"B"}, {"C", "E"}}
○putRelatedItem(文字列型: item)
  文字列型の配列: allItems ← orders に含まれる文字列を重複なく辞書順に格納した配列
  文字列型の配列: otherItems ← allItems の複製から値が item である要素を除いた配列
  整数型: i, itemCount ← 0
  整数型の配列: arrayK ← {otherItems の要素数個の 0}
  整数型の配列: arrayM ← {otherItems の要素数個の 0}
  実数型: valueL, maxL ← −∞
  文字列型の配列: order
  文字列型: relatedItem
  for (order に orders の要素を順に代入する)
    if (order のいずれかの要素の値が item の値と等しい)
      itemCount の値を 1 増やす
    endif
    for (i を 1 から otherItems の要素数まで 1 ずつ増やす)
      if (order のいずれかの要素の値が otherItems[i]の値と等しい)
        if (order のいずれかの要素の値が item の値と等しい)
          [ a ]の値を 1 増やす
        endif
        [ b ]の値を 1 増やす
      endif
    endfor
  endfor
  for (i を 1 から otherItems の要素数まで 1 ずつ増やす)
    valueL ← (arrayM[i] × [ c ]) ÷ (itemCount × arrayK[i])
    /_ 実数として計算する _/
    if (valueL が maxL より大きい)
      maxL ← valueL
      relatedItem ← otherItems[i]
    endif
  endfor
  relatedItem の値と maxL の値をこの順にコンマ区切りで出力する

解答群

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和6年公開問題 科目Bの注意事項問題次の記述中の空欄に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。関数 merge は,昇順に整列された整数型の配列 data1 及び data2 を受け取り,これらを併合してできる昇順...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和6年公開問題 科目Bの注意事項問題次のプログラム中の空欄に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。図1 に示すグラフの頂点には,1 から順に整数で番号が付けられている。グラフは 無向グラフであり,各頂点間には高々...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和6年公開問題 科目Bの注意事項問題次のプログラム中の空欄に入れる正しい答えを,解答群の中から選べ。関数 convDecimal は,引数として与えられた,"0" と "1" だけから成る 1 文字以上の文字列を,符号なしの 2 進数と解釈したときの整数...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和6年公開問題 科目Bの注意事項問題次のプログラム中の空欄に入れる正しい答えを,解答群の中から選べ。関数maximum は,異なる三つの整数を引数で受け取り,そのうちの最大値を返す。[プログラム]○整数型: maximum(整数型: x, 整数型...

Read more...

キーが小文字のアルファベット 1 文字(a,b,…,z のいずれか)であるデータを,大きさが 10 のハッシュ表に格納する。ハッシュ関数として,アルファベットの ASCII コードを 10 進表記法で表したときの 1 の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCII コードでは,昇順に連続した 2 進数が,アルファベット順にコードとして割り当てられている。 ア a ...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和7年公開問題 科目Bの注意事項問題次の記述中の【  a  】と【  b  】に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。予防接種の病気X に対する予防効果を調査するために集めたデータの集計結果を基に,病気X...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和7年公開問題 科目Bの注意事項問題次の記述中の空欄に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。関数 search は,data から key の要素の並びと同じ並びを全て探し,その先頭の要素番号を全て格納した配列を...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和7年公開問題 科目Bの注意事項問題次のプログラム中の【  a  】と【  b  】に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。関数 push はスタックに値を格納し,格納できた場合は true,できなかった...

Read more...

科目Bに共通する注意事項(表記ルールなど)については、下記のリンク先を参照してください。基本情報技術者 令和7年公開問題 科目Bの注意事項問題次のプログラム中の空欄に入れる正しい答えを,解答群の中から選べ。関数change は,10 より大きい整数を引数n で受け取り,1 円玉,5 円玉,10 円玉を使ってちょうどn 円にする組合せの総数を返す。例えば,...

Read more...