📄 本試験 公開問題
基本情報技術者試験 2024年度(令和6年度) 科目B 公開問題
6問(本試験20問中の公開分) ・ 目安 正答率60%
基本情報技術者の2024年度(令和6年度) 科目B試験で実際に出題された問題のうち、公式に公開されている6問(本試験は20問)を、1問ずつその場で答え合わせしながら演習できます。合否の目安は正答率60%(演習の目安)。各問に正解と、なぜその選択肢になるのかの解説を付けています。
本試験の合格基準 :科目A・科目Bの評価点がともに600点以上で合格(各1,000点満点・IRT方式)。
この回 :科目Bの基準は評価点600点以上/1,000点満点(IRT)。合格には科目Aも600点以上が必要。公開問題は本試験20問のうち一部の抜粋で、正答率60%は評価点600点と同じではない。
出典:IPA 試験要綱 Ver.5.6(2026年10月の試験から適用)4. 採点方式・配点・合格基準 。このページの「目安 正答率60%」は演習の目安で、本試験の採点方法とは異なります。
この回は 独立行政法人 情報処理推進機構(IPA) が公開する本試験問題を、当サイトがその場で答え合わせできる一問一答形式に再編 し、公式には付いていない「正解の根拠・各選択肢の解き方」の解説を追記 したものです。原題の出典は各問に明記しています。
この回は本試験そのものではなく、独立行政法人 情報処理推進機構(IPA)が公開している「公開問題」 です。実際の試験は20問 で構成され、そのうち6問 が公開されています。公開されていない残りの問題は当サイトにも収録できません。この試験区分はCBT(コンピュータ方式)で通年実施されているため、公式が本試験をまるごと公開することがなく、これが公式から入手できる唯一の本試験問題です。
過去問の解答結果は学習記録・段位には反映されません 。過去問は出題当時の法令・制度にもとづく問題を含むため、段位は継続して最新化している一問一答・模擬試験だけで判定しています。過去問を解かなくても段位で不利になることはありません ので、実力試しとして気軽にお使いください。
擬似言語の記述形式(科目Bの全問で共通。原本の2〜3ページ目)
問 1
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。
関数maximum は,異なる三つの整数を引数で受け取り,そのうちの最大値を返す。
〔プログラム〕
○整数型: maximum(整数型: x, 整数型: y, 整数型: z)
if (□)
return x
elseif (y > z)
return y
else
return z
endif
ア
x > y
イ
x > y and x > z
ウ
x > y and y > z
エ
x > z
オ
x > z and z > y
カ
z > y
正解:イ
最初の if で x を返すのだから,その条件は「x が3つの中でいちばん大きい」でなければならない。それは x > y かつ x > z である。よってイ。この条件が偽なら x は最大ではないので,残る y と z を比べればよく,あとの elseif (y > z) と else はそのままで正しく動く。アの x > y だけでは,x > y でも z がもっと大きい場合に x を返してしまう。エの x > z だけも同様である。ウの x > y and y > z は x が最大であることに加えて y > z まで求めており,x > z > y のときに条件が偽になって x を返せない。オも同じ形で条件が狭すぎる。カの z > y は x について何も言っていない。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問1
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
問 2
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。
関数convDecimal は,引数として与えられた,“0”と“1”だけから成る,1 文字以上の文字列を,符号なしの2 進数と解釈したときの整数値を返す。例えば,引数として“10010”を与えると18 が返る。
関数convDecimal が利用する関数int は,引数で与えられた文字が“0”なら整数値0 を返し,“1”なら整数値1 を返す。
〔プログラム〕
○整数型: convDecimal(文字列型: binary)
整数型: i, length, result ← 0
length ← binaryの文字数
for (i を 1 から length まで 1 ずつ増やす)
result ← □
endfor
return result
ア
result + int(binary の (length - i + 1)文字目の文字)
イ
result + int(binary の i文字目の文字)
ウ
result × 2 + int(binary の (length - i + 1)文字目の文字)
エ
result × 2 + int(binary の i文字目の文字)
正解:エ
2進数を左(上位)から1桁ずつ読むときは,それまでの値を2倍して桁を1つ繰り上げてから,新しい桁を足す。ループは i を1から増やすので i 文字目は左から数えた桁であり,result × 2 + int(binary の i文字目の文字) が正しい。よってエ。“10010”で追うと,0→1→2→4→9→18 となり,例に示された18 に一致する。アとイは2倍していないので,各桁の値を足すだけになり,“10010”なら1の個数である2しか返らない。ウは2倍はしているが右(下位)から読んでおり,“10010”を左右反転した“01001”を変換して9を返してしまう。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問2
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
問 3
次のプログラム中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。
図1 に示すグラフの頂点には,1 から順に整数で番号が付けられている。グラフは無向グラフであり,各頂点間には高々一つの辺がある。一つの辺は両端の頂点の番号を要素にもつ要素数2 の整数型の 配列で表現できる。例えば,{1,3} は頂点1 と頂点3 を端点とする辺を表す。グラフ全体は,グラフに含まれる辺を表す要素数2 の配列を全て格納した配列(以下,辺の配列という)で表現できる。辺の配列の要素数はグラフの辺の個数と等しい。図1 のグラフは整数型配列の配列{{1, 3}, {1, 4}, {3, 4}, {2, 4}, {4, 5}}と表現できる。
関数edgesToMatrix は,辺の配列を隣接行列に変換する。隣接行列とは,グラフに含まれる頂点の個数と等しい行数及び列数の正方行列で,i 行j 列の成分は頂点i と頂点j を結ぶ辺があるときに1 となり,それ以外は0 となる。行列の対角成分は全て0 で,無向グラフの場合は対称行列になる。図1 のグラフを表現する隣接行列を図2 に示す。
関数edgesToMatrix は,引数edgeList で辺の配列を,引数nodeNum でグラフの頂点の個数をそれぞれ受け取り,隣接行列を表す整数型の二次元配列を返す。
〔プログラム〕
○整数型の二次元配列: edgesToMatrix(整数型配列の配列: edgeList, 整数型: nodeNum)
整数型の二次元配列: adjMatrix ← {nodeNum行nodeNum列の 0}
整数型: i, u, v
for (i を 1 から edgeListの要素数 まで 1 ずつ増やす)
u ← edgeList[i][1]
v ← edgeList[i][2]
□
endfor
return adjMatrix
ア
adjMatrix[u, u] ← 1
イ
adjMatrix[u, u] ← 1
adjMatrix[v, v] ← 1
ウ
adjMatrix[u, v] ← 1
エ
adjMatrix[u, v] ← 1
adjMatrix[v, u] ← 1
オ
adjMatrix[v, u] ← 1
カ
adjMatrix[v, v] ← 1
正解:エ
無向グラフでは辺に向きが無いので,頂点u と頂点v を結ぶ辺があればu 行v 列と v 行u 列の両方が1になる(設問にも「対称行列になる」と書かれている)。したがって2か所を1にする必要があり,エが正しい。ウやオのように片側だけを1にすると,対称行列にならない。図1 の辺{1, 3} を例にとると,ウでは1行3列だけが1になり3行1列が0のままで,図2 と食い違う。アとカとイは対角成分(u 行u 列など)を1にしているが,対角成分は「自分自身への辺」を意味し,設問では全て0と決められている。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問3
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
問 4
次の記述中の □ に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。
関数merge は,昇順に整列された整数型の配列data1 及びdata2 を受け取り,これらを併合してできる昇順に整列された整数型の配列を返す。
関数merge をmerge({2, 3}, {1, 4}) として呼び出すと,/*** α ***/ の行は □ 。
〔プログラム〕
○整数型の配列: merge(整数型の配列: data1, 整数型の配列: data2)
整数型: n1 ← data1の要素数
整数型: n2 ← data2の要素数
整数型の配列: work ← {(n1 + n2)個の 未定義の値}
整数型: i ← 1
整数型: j ← 1
整数型: k ← 1
while ((i ≦ n1) and (j ≦ n2))
if (data1[i] ≦ data2[j])
work[k] ← data1[i]
i ← i + 1
else
work[k] ← data2[j]
j ← j + 1
endif
k ← k + 1
endwhile
while (i ≦ n1)
work[k] ← data1[i]
i ← i + 1
k ← k + 1
endwhile
while (j ≦ n2)
work[k] ← data2[j] /*** α ***/
j ← j + 1
k ← k + 1
endwhile
return work
ア
実行されない
イ
1 回実行される
ウ
2 回実行される
エ
3 回実行される
正解:イ
data1={2, 3},data2={1, 4} で,n1=2,n2=2 である。最初の while は,どちらの配列にもまだ要素が残っている間だけ回る。1周目は data1[1]=2 と data2[1]=1 を比べ,2 ≦ 1 は偽なので work[1] に1を入れて j=2。2周目は 2 ≦ 4 が真なので work[2] に2を入れて i=2。3周目は 3 ≦ 4 が真なので work[3] に3を入れて i=3。ここで i が n1 を超えたので最初の while を抜ける。次の while は i ≦ n1 が偽なので1度も回らない。最後の while は j=2 ≦ n2=2 なので1回だけ回り,work[4] に4を入れる。この行が /*** α ***/ なので1回実行される。よってイ。最後まで残るのは片方の配列だけで,この例では data2 の4が1つ残っている。両方の while が回ることはない。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問4
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
問 5
次のプログラム中の [a] ~ [c] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1 から始まる。
一度の注文で購入された商品のリストを,注文ごとに記録した注文データがある。表に,注文データの例を示す。
注文データから,商品x と商品y とが同一の注文で購入されやすい傾向を示す関連度Lxy を,次の式で計算する。
ここで,Mxy は商品x と商品y とが同一の注文で購入された注文数,Kx は商品x が購入された注文数,Ky は商品y が購入された注文数を表す。表の例では,MAB が2,全注文数が6,KA が4,KB が3 であるので,商品A と商品B の関連度LAB は,(2 × 6) / (4 × 3) = 1.0 である。
手続putRelatedItem は,大域変数orders に格納された注文データを基に,引数で与えられた商品との関連度が最も大きい商品のうちの一つと,その関連度を出力する。プログラムでは,商品は文字列で表し,注文は購入された商品の配列,注文データは注文の配列で表している。注文データには2 種類以上の商品が含まれるものとする。また,注文データにある商品以外の商品が,引数として与えられることはないものとする。
〔プログラム〕
// 注文データ(ここでは表の例を与えている)
大域: 文字列型配列の配列: orders ← {{"A", "B", "D"}, {"A", "D"}, {"A"},
{"A", "B", "E"}, {"B"}, {"C", "E"}}
○putRelatedItem(文字列型: item)
文字列型の配列: allItems ← ordersに含まれる文字列を
重複なく辞書順に格納した配列
// 表の例では {"A", "B", "C", "D", "E"}
文字列型の配列: 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の値をこの順にコンマ区切りで出力する
ア
[a]arrayK[i] [b]arrayM[i] [c]allItemsの要素数
イ
[a]arrayK[i] [b]arrayM[i] [c]ordersの要素数
ウ
[a]arrayK[i] [b]arrayM[i] [c]otherItemsの要素数
エ
[a]arrayM[i] [b]arrayK[i] [c]allItemsの要素数
オ
[a]arrayM[i] [b]arrayK[i] [c]ordersの要素数
カ
[a]arrayM[i] [b]arrayK[i] [c]otherItemsの要素数
正解:オ
式の3つの量が,プログラムのどの変数に当たるかを対応づける。
Kx(商品x が買われた注文数)は itemCount である。これは外側のループで「注文に item が入っていれば1増やす」としているところで数えている。
[b]は,注文に otherItems[i] が入っていれば無条件に1増える位置にある。これは相手の商品が買われた注文数なので Ky,つまり arrayK[i] である。
[a]は,そのさらに内側で「注文に item も入っている」ときだけ1増える位置にある。これは両方が同じ注文で買われた注文数なので Mxy,つまり arrayM[i] である。
最後の計算式は valueL ← (arrayM[i] × [c]) ÷ (itemCount × arrayK[i]) で,式の (Mxy × 全注文数) ÷ (Kx × Ky) と並べると [c] は全注文数である。全注文数は注文データの件数なので ordersの要素数。表の例では6になる。
したがってオ。allItemsの要素数(商品の種類数・表の例では5)やotherItemsの要素数(自分を除いた商品数・表の例では4)は注文の件数ではない。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問5
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
問 6
A 社は従業員450 名の商社であり,昨年から働き方改革の一環として,在宅でのテレワークを推進している。A 社のシステム環境を図1 に示す。
・従業員には,一人に1 台デスクトップPC(以下,社内PC という)を貸与している。
・従業員が利用するシステムには,自社で開発しA 社に設置している業務システムのほかに,次の二つのSaaS(以下,二つのSaaS をA 社利用クラウドサービスという)がある。
1. メール機能,チャット機能及びクラウドストレージ機能をもつグループウェア(以下,A 社利用グループウェアという)
2. オンライン会議サービス
・テレワークでは,従業員の個人所有PC(以下,私有PC という)の業務利用(BYOD)を許可している。
・テレワークでは,社内PC 及び私有PC のそれぞれに専用のアプリケーションソフトウェア(以下,専用アプリという)を導入し,社内PC のデスクトップから私有PC に画面転送を行うリモートデスクトップ方式を採用している。
・専用アプリには,リモートデスクトップからPC へのファイルのダウンロード及びファイル,文字列,画像などのコピー&ペーストを禁止する機能(以下,保存禁止機能という)があり,A 社では私有PC に対して当該機能を有効にしている。
・業務システムには,社内PC のデスクトップから利用者ID 及びパスワードを入力してログインしている。
・A 社利用クラウドサービスへのログインは,A 社利用クラウドサービス側の設定によってA 社の社内ネットワークからだけ可能になるように制限している。ログインには利用者ID 及びパスワードを用いている。
図1 A 社のシステム環境(抜粋)
テレワークの定着が進むにつれて,社内PC からインターネットへの接続が極端に遅くなり,業務に支障をきたしているので改善できないかと,従業員から問合せがあった。A 社の社内ネットワークとインターネットとの間の通信量を調査したところ,テレワーク導入前に比べ,業務時間帯で顕著に増加していることが判明した。そのため,情報システム部では,テレワークでA 社利用クラウドサービスに接続する場合には,A 社の社内ネットワークも社内PC も介さずに直接接続することを可能にするネットワークの設定変更を実施することにした。
設定変更に当たり,情報セキュリティ上の問題がないかをA 社の情報セキュリティリーダーであるB さんが検討したところ,幾つか問題があることが分かった。その一つは,A 社利用クラウドサービスへの不正アクセスのリスクが増加することである。そこでB さんは,リスクを低減するために,情報システム部に対策を依頼することにした。
設問 次の対策のうち,情報システム部に依頼することにしたものはどれか。解答群のうち,最も適切なものを選べ。
ア
A 社の社内ネットワークからA 社利用クラウドサービスへの通信を監視する。
イ
A 社の社内ネットワークとA 社利用クラウドサービスとの間の通信速度を制限する。
ウ
A 社利用クラウドサービスにA 社外から接続する際の認証に2 要素認証を導入する。
エ
A 社利用クラウドサービスのうち,A 社利用グループウェアだけを直接接続の対象とする。
オ
専用アプリの保存禁止機能を無効にする。
正解:ウ
これまでA 社利用クラウドサービスは,社内ネットワークからしかログインできない設定にしてあった。つまり利用者IDとパスワードが漏れても,社外からは試しようがなかった。直接接続を認めるとこの制限が外れ,IDとパスワードさえ知っていれば世界中のどこからでもログインを試せるようになる。これが「不正アクセスのリスクが増加する」の中身である。したがって,知識(パスワード)だけに頼らず,所持や生体をもう一つの要素として求める2要素認証を社外からの接続に導入するのが対策になる。よってウ。アは社内ネットワークからの通信の監視で,今回問題になっている社外からの直接接続を見ていないので効かない。イの通信速度の制限は,そもそも遅さを解消するための設定変更なので目的に反するうえ,不正アクセス対策にもならない。エは直接接続の対象を絞るだけで,グループウェアへの不正アクセスのリスクは残る。オの保存禁止機能を無効にすると,私有PC に業務データを保存できるようになり,かえって情報漏えいのリスクが増す。
出典:情報処理推進機構「令和6年度 基本情報技術者試験 科目B 公開問題」問6
⚠ この問題の誤りを報告
送信
報告ありがとうございました。内容を確認します。
この回の最終更新:
2026年9月9日
基本情報技術者の他の過去問・演習
基本情報技術者の過去問一覧
/
基本情報技術者の一問一答で分野別に鍛える