基本情報の科目Bサンプル問題6問を解説!2022年4月公開分の解き方

科目Bの演習に向けたノートと鉛筆、処理の流れを表すブロック

基本情報技術者試験の科目Bサンプル問題を解いたものの、正解の記号だけでは処理の追い方が分からないことがあります。この記事では、IPAが2022年4月に公開した6問を対象に、条件分岐、配列、リスト、疎行列、文字列、セキュリティの順に解説します。

正答は問1から順に「カ・ウ・ア・イ・ウ・オ」です。まずはIPAの科目Bサンプル問題と解答例を開き、問題文と選択肢を見ながら読み進めてください。同じ2022年に公表された20問のサンプル問題セットとは別の6問です。

この記事のポイント
  • 問1・問2の境界値と配列の交換を確認
  • 問3・問4は参照先と行・列・値を追跡
  • 問5は割合の分母から末尾を除外
  • 問6は設問に示された契約と担当範囲で判定
無料

基本情報技術者試験 過去問アプリ

本番形式で繰り返し解ける。スキマ時間に1問から

2,000問以上収録
無料で過去問を解く
目次

基本情報の科目Bサンプル問題の解答一覧

出典は「基本情報技術者試験 科目B試験サンプル問題」(IPA、2022年4月25日掲載)です。下表の正解と題材は、IPAの問題冊子末尾にある解答例・出題趣旨と照合しています。問題冊子では問1〜5がアルゴリズムとプログラミング、問6が情報セキュリティです。

問題正答追うもの
問1カ年齢の境界と条件分岐
問2ウ配列の両端と一時変数
問3ア単方向リストの末尾と参照
問4イ0以外の行・列・値
問5ウ隣接する文字と割合の分母
問6オクラウド基盤とアプリの担当

解説中の小さな例は、考え方を確認するための例です。選択肢の細部は必ずIPAの原問題で確認し、解答を覚えるだけでなく、なぜほかの条件では困るかまで考えてみましょう。

問1・問2の条件分岐と配列を追う

問1:最初の条件を通過した値に注目

問1の正答はカです。年齢が3以下なら最初の分岐で処理されます。次の条件が評価される時点では、年齢はすでに4以上です。そのため、次に「9以下」を確認すれば、4〜9を正しく選べます。

境界の3・4・9・10で確認すると、3は最初の分岐、4と9は次の分岐、10は最後の分岐です。「9より小さい」を選ぶと9歳が最後へ流れます。一方、「4以上」だけでは10歳以上も次の分岐に入り、料金が変わってしまいます。

条件式を単独で読むのではなく、その行に到達する前に何が除外されたかを書き添えるのがコツです。ifとelseifは上から順に判定され、一つの分岐に入った後は同じ分岐の残りを選びません。

問2:両端を交換し中央はそのまま

問2の正答はウです。要素番号は1から始まるので、要素数を5としたとき、左端1に対応する右端は「5−1+1=5」です。次は左2と右4を交換し、真ん中の3は動かしません。

状態leftright配列
開始前――1、2、3、4、5
1回目の交換後155、2、3、4、1
2回目の交換後245、4、3、2、1

プログラムでは右側の値を一時変数tmpへ退避し、左側の値を右側へ移してから、tmpの値を左側へ戻します。最後の代入先が右側のままだと、退避した値を同じ場所に戻すだけで交換になりません。

繰返し回数は要素数を2で割った商なので、5要素なら2回です。偶数個の場合も、左半分と右半分を一組ずつ交換できます。配列の添字や値を見失ったときは、基本情報のトレース表の書き方も役立ちます。

問3・問4のリストと行列を追う

問3:空のリストと末尾追加を分ける

問3の正答はアです。リストが空なら先頭を示すlistHeadは未定義なので、新しく作った要素currを先頭にします。既存の要素がある場合は、先頭からnextをたどり、nextが未定義の要素まで進みます。

たとえば A→B の末尾へCを追加するとき、まずprevはAからBへ移ります。Bのnextは未定義なので繰返しが終わり、BのnextにCを参照するcurrを代入します。結果は A→B→C です。新しい要素のnextは初期状態で未定義のため、curr.nextを代入してもCにはつながりません。

空のときは先頭の更新、空でないときは末尾のnextの更新、と分けて追ってください。連結の基本を復習したい場合は、配列・リスト・ポインタの違いを先に読むと理解しやすくなります。

問4:0以外の座標と値を同じ順に記録

問4の正答はイです。外側の繰返しが行、内側が列を進めます。値が0以外のセルだけについて、「行番号」「列番号」「その値」を、それぞれ別の配列の末尾へ追加します。

最初の3件は(1行1列、値3)、(2行2列、値2)、(2行3列、値2)です。最後まで同じ順に追うと、行番号は「1、2、2、3、3、4、5」、列番号は「1、2、3、4、5、4、5」、値は「3、2、2、1、3、2、1」になります。

特に3行5列の値3と4行4列の値2を取り違えないようにしましょう。列番号は行が変わると1へ戻ります。三つの配列を別々に考えるより、0以外のセルを一つ見つけるたびに「行・列・値」を横一列で記録すると、対応関係が崩れません。

問5・問6の割合と担当範囲を判断する

問5:次の文字が存在する回数で割る

問5の正答はウです。求めたいのは、文字c1の次に文字c2が現れる割合です。分子はc1とc2が連続する回数、分母は「次の文字を調べられるc1の回数」になります。

単語の末尾のc1には次の文字がないため、問題の条件では分母に含めません。したがって分母は、c1全体の出現回数freq(s1)から、c1で終わる単語数freqE(s1)を引いた値です。正答の式は「freq(s1+s2) ÷(freq(s1)−freqE(s1))」になります。

IPAの例では、末尾以外のnが5回あり、その直後がfなのは2回なので、2÷5=0.4です。末尾のnを分母へ混ぜない点と、分子・分母を逆にしない点を確認してください。c1とc2の並びが0回なら、プログラムは割り算をせず0を返します。

問6:問題文の契約に沿って分ける

問6の正答はオで、DBMSの脆弱性、アプリケーションサーバのOSの脆弱性、ログイン機能の脆弱性への対応先は、順にB社・B社・C社です。B社は問題で示されたPaaSの提供者、C社はWebアプリケーションの開発・運用を委託された会社です。

ログイン機能はWebアプリケーション側の問題で、設問の契約ではその脆弱性対策をC社が実施します。一方、問題に示されたPaaS上のDBMSとOSはB社に対応させます。診断したD社が、指摘されたすべての修正を担当するとは書かれていません。

これは本問の条件に基づく答えです。実際のクラウドサービスでは、製品や契約によって運用責任が異なるため、常に同じ会社が担当すると一般化せず、サービスの責任分担と契約を確認しましょう。

基本情報の科目Bサンプル問題を復習する

間違えた問題は、正しい記号を暗記する前に、止まった箇所を一つに絞ります。問1なら境界、問2なら添字と交換順、問3なら参照先、問4なら行と列、問5なら分母、問6なら契約条件です。その部分だけメモしてから、原問題へ戻って再度解いてみてください。

この6問は2022年4月公開のサンプルで、本試験20問そのものではありません。続けて別のIPAの20問サンプル問題セットや公開問題に取り組み、時間を測った演習も行いましょう。2026年度の公開問題を解くときは、2026年度の科目B公開問題の解説も参考になります。

短い問題を続けて解きたい場合は、基本情報の過去問アプリも利用できます。各問題の出典や形式を確認し、公式問題と併用してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次