本文へスキップ

FE SUBJECT B

データ構造及びアルゴリズムの問題一覧

基本情報技術者 科目Bの「データ構造及びアルゴリズム」分野を、問題ごとの解説ページで確認できます。

OVERVIEW

データ構造及びアルゴリズムとは(学習のポイント)

「データ構造及びアルゴリズム」は、配列・スタック・キュー・木・グラフ・ハッシュ表といった基本的なデータ構造と、整列(挿入ソート・選択ソートなど)や探索(線形探索・二分探索)、再帰、グラフ探索(深さ優先・幅優先)などの代表的なアルゴリズムを扱う分野です。あわせて、累積和・スライディングウィンドウ・二ポインタ・動的計画法・貪欲法といった、配列やループを使った典型的な解法パターンも問われます。

基本情報技術者試験の科目Bでは、この分野が中心的な位置づけにあり、出題の多くは擬似言語(疑似コード)で書かれたプログラムを読み解く形式です。与えられたコードを1行ずつ追いかけ、変数や配列の値がどう変化するかをトレースして戻り値を求める問題が多く、用語の暗記よりも「正確に処理を追う力」が重視されます。

学習のコツは、紙やメモの上で変数の値の変化を表にして丁寧に追う練習を重ねることです。ループの開始・終了条件、break で抜けるタイミング、配列の要素番号が1から始まる点、添字のずれなどが、つまずきやすく誤答を誘う典型ポイントです。スタックやキューの出し入れの順序、再帰の呼び出しと戻りの流れも、図に描いて整理すると理解が安定します。

SUMMARY

出題数と難易度

掲載問題数 90問
難しい 69問
標準 16問
易しい 5問

QUESTION LIST

問題一覧

挿入ソート 配列 a={5,2,4,6,1,3} に対して、次の手続 p… 難しい / fe_b_v89_alg_rec_001 選択ソート 配列 a={7,2,6,3,5} に対して、次の手続 par… 難しい / fe_b_v89_alg_rec_002 隣接行列 次の無向グラフを隣接行列に入れるプログラムを実行したとき、戻… 標準 / fe_b_v89_alg_rec_003 幅優先探索 次の手続 bfsOrder() を実行したときの戻り値はどれ… 難しい / fe_b_v89_alg_rec_004 二次元配列 次の二次元配列処理を実行したとき、戻り値はどれか。配列の要素… 標準 / fe_b_v89_alg_rec_005 二次元配列 二次元配列 m={{2,5,1,4},{3,6,2,1},{… 難しい / fe_b_v89_alg_rec_006 文字列処理 次の文字列処理を実行したとき、戻り値はどれか。 文字列型: … 易しい / fe_b_v89_alg_rec_007 文字列処理 文字列 s="AABCCBAA" に対して、次の手続 run… 難しい / fe_b_v89_alg_rec_008 ビット処理 次の手続 bitOddScore(45) を実行したときの戻… 難しい / fe_b_v89_alg_rec_009 ビット処理 次のビット演算を実行したとき、戻り値はどれか。13は2進数で… 易しい / fe_b_v89_alg_rec_010 ハッシュ表 次の手続 hashProbeScore() を実行したときの… 難しい / fe_b_v89_alg_sortsearch_001 ハッシュ表 次の手続 hashPlaceScore() を実行したときの… 難しい / fe_b_v89_alg_sortsearch_002 累積和 配列 a={3,1,4,1,5,9} に対して、次の手続 p… 難しい / fe_b_v89_alg_sortsearch_003 スライディングウィンドウ 配列 a={1,3,2,1,4,2} に対して、次の手続 c… 難しい / fe_b_v89_alg_sortsearch_004 二重ループ 配列 a={2,5,1,4,3} に対して、次の手続 bre… 難しい / fe_b_v89_alg_sortsearch_005 break処理 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {5, 9… 易しい / fe_b_v89_alg_sortsearch_006 マージ処理 配列 a={1,4,7}, b={2,4,6,8} に対して… 難しい / fe_b_v89_alg_sortsearch_007 二ポインタ 昇順配列 a={1,2,4,6,9} に対して、次の手続 t… 難しい / fe_b_v89_alg_sortsearch_008 動的計画法 配列 a={3,1,2,5,4} に対して、次の手続 lis… 難しい / fe_b_v89_alg_sortsearch_009 貪欲法 次の手続 greedySelect() を実行したときの戻り… 難しい / fe_b_v89_alg_sortsearch_010 配列トレース 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {4, 9… 標準 / fe_b_v90_alg_trace_091 配列トレース 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {3… 標準 / fe_b_v90_alg_trace_092 文字列処理 次のプログラムを実行したとき、戻り値はどれか。 文字列型: s ← "ABACA… 標準 / fe_b_v90_alg_trace_093 文字列処理 次のプログラムを実行したとき、戻り値はどれか。 文字列型: s ← "AA… 標準 / fe_b_v90_alg_trace_094 スタック 次の手続 stackScore() を実行したときの戻り値は… 難しい / fe_b_v90_alg_trace_095 キュー 次の手続 queueScore() を実行したときの戻り値は… 難しい / fe_b_v90_alg_trace_096 探索 回転済み昇順配列 a={7,9,1,3,5} に対して、次の… 難しい / fe_b_v90_alg_trace_097 探索 昇順配列 a={1,2,2,2,4,5,5} に対して、次の… 難しい / fe_b_v90_alg_trace_098 整列 次の挿入ソートをi=4まで実行したとき、戻り値はどれか。配列… 難しい / fe_b_v90_alg_trace_099 整列 次の選択ソートを3回だけ実行したとき、戻り値はどれか。 整数… 難しい / fe_b_v90_alg_trace_100 二次元配列 次のプログラムを実行したとき、戻り値はどれか。 整数型の二次元配列: m ← {{2… 難しい / fe_b_v90_alg_trace_101 二次元配列 次のプログラムを実行したとき、戻り値はどれか。 整数型の二次元配列: m ← {{5… 標準 / fe_b_v90_alg_trace_102 再帰 次の再帰関数を実行したとき、戻り値はどれか。 ○整数型: f… 難しい / fe_b_v90_alg_trace_103 再帰 次の再帰関数を実行したとき、戻り値はどれか。ここで÷は整数除算である。 ○整数型: g… 難しい / fe_b_v90_alg_trace_104 グラフ探索 次の幅優先探索を実行したとき、戻り値はどれか。頂点番号は1から始まる。 整… 難しい / fe_b_v90_alg_trace_105 グラフ探索 次の深さ優先探索をスタックで実行したとき、戻り値はどれか。 … 難しい / fe_b_v90_alg_trace_106 ハッシュ表 次の線形探索法のハッシュ表で、28を見つけるまでの参照回数は… 難しい / fe_b_v90_alg_trace_107 ビット処理 次のビット処理を実行したとき、戻り値はどれか。ここで∧はビッ… 難しい / fe_b_v90_alg_trace_108 累積和 次のプログラムを実行したとき、戻り値はどれか。配列pの添字は… 標準 / fe_b_v90_alg_trace_109 スライディングウィンドウ 次の長さ3の区間を調べるプログラムを実行したとき、戻り値はど… 難しい / fe_b_v90_alg_trace_110 二重ループ 次の二重ループを実行したとき、戻り値はどれか。 整数型の配列: a ← {3… 難しい / fe_b_v90_alg_trace_111 二重ループ 次の二重ループを実行したとき、戻り値はどれか。 整数型の配列: a ← {4… 難しい / fe_b_v90_alg_trace_112 マージ処理 次のマージ処理を途中まで実行したとき、戻り値はどれか。 整数… 難しい / fe_b_v90_alg_trace_113 二ポインタ 次の二ポインタ法で、和が8以下の組の数を求める。戻り値はどれ… 難しい / fe_b_v90_alg_trace_114 動的計画法 次の動的計画法で、合計5を作る組合せ数を求める。戻り値はどれ… 難しい / fe_b_v90_alg_trace_115 貪欲法 次の貪欲法で選択される仕事数はどれか。各行は{開始時刻, 終… 難しい / fe_b_v90_alg_trace_116 手続呼出し 次のプログラムで、procMainを呼び出したときの出力順序はどれか。 ○procA… 易しい / fe_b_v90_alg_trace_117 手続呼出し 次の再帰的な手続を呼び出したとき、出力順序はどれか。 ○pr… 易しい / fe_b_v90_alg_trace_118 木構造 次の木構造を再帰的に評価したとき、戻り値はどれか。配列の要素… 難しい / fe_b_v90_alg_trace_119 グラフ 次のトポロジカルソートを実行したとき、戻り値はどれか。 整数… 難しい / fe_b_v90_alg_trace_120 配列トレース 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {6… 標準 / fe_b_v90_alg_trace_121 配列トレース 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {5, 3… 標準 / fe_b_v90_alg_trace_122 文字列処理 次のプログラムを実行したとき、戻り値はどれか。文字列の文字番号は1から始まる。 文字列: s ← "A… 標準 / fe_b_v90_alg_trace_123 文字列処理 次のプログラムを実行したとき、戻り値はどれか。文字列の文字番号は1から始まる。 文字列: s ← "1… 標準 / fe_b_v90_alg_trace_124 スタック 次の後置記法をスタックで評価したとき、戻り値はどれか。 文字… 難しい / fe_b_v90_alg_trace_125 キュー 次の循環キュー操作を実行したとき、戻り値はどれか。enque… 難しい / fe_b_v90_alg_trace_126 探索 次の二分探索で、x×xが50以上となる最小のxを求める。戻り… 難しい / fe_b_v90_alg_trace_127 探索 次の探索で、keyより大きい最初の要素番号を求める。戻り値は… 難しい / fe_b_v90_alg_trace_128 整列 次のクイックソートの分割処理を1回実行したとき、pivotの… 難しい / fe_b_v90_alg_trace_129 整列 次のバブルソートを実行したとき、戻り値はどれか。 整数型の配… 難しい / fe_b_v90_alg_trace_130 二次元配列 次のプログラムを実行したとき、戻り値はどれか。行・列番号は1から始まる。 整数型の二次元配列: m ← {{2, 1… 標準 / fe_b_v90_alg_trace_131 二次元配列 次の二次元配列処理を実行したとき、戻り値はどれか。 整数型の… 難しい / fe_b_v90_alg_trace_132 再帰 次の再帰関数を実行したとき、戻り値はどれか。ここで÷は整数除算である。 ○整数型: h… 難しい / fe_b_v90_alg_trace_133 再帰 次の再帰関数を実行したとき、戻り値はどれか。 ○整数型: p… 難しい / fe_b_v90_alg_trace_134 グラフ探索 次のダイクストラ法で、頂点1から頂点5への最短距離はどれか。… 難しい / fe_b_v90_alg_trace_135 グラフ探索 次の深さ優先探索を実行したとき、戻り値はどれか。 整数型の二… 難しい / fe_b_v90_alg_trace_136 ハッシュ表 次の線形探索法のハッシュ表で、11を見つけるまでの参照回数は… 難しい / fe_b_v90_alg_trace_137 ビット処理 次のプログラムを実行したとき、戻り値はどれか。整数は8ビット… 難しい / fe_b_v90_alg_trace_138 累積和 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {4, 1… 難しい / fe_b_v90_alg_trace_139 スライディングウィンドウ 長さ3の連続部分列のうち、和が10を超え、かつ偶数であるもの… 難しい / fe_b_v90_alg_trace_140 二重ループ 次のプログラムを実行したとき、戻り値はどれか。配列の要素番号は1から始まる。 整数型の配列: a ← {2… 難しい / fe_b_v90_alg_trace_141 二重ループ 次のプログラムを実行したとき、戻り値はどれか。行・列番号は1から始まる。 整数型の二次元配列: m ← {{2, 5… 難しい / fe_b_v90_alg_trace_142 マージ処理 整列済み配列a,bに共通して現れる値を、重複も含めて数える。… 難しい / fe_b_v90_alg_trace_143 二ポインタ 次のプログラムを実行したとき、戻り値はどれか。文字番号は1か… 難しい / fe_b_v90_alg_trace_144 動的計画法 隣り合う要素を同時に選ばないという条件で、選んだ要素の合計の… 難しい / fe_b_v90_alg_trace_145 貪欲法 終了時刻の早い順に並んだ作業を、重ならないように貪欲に選ぶ。… 難しい / fe_b_v90_alg_trace_146 手続呼出し 次の手続を main から実行したとき、出力される文字列はど… 標準 / fe_b_v90_alg_trace_147 再帰的手続 次の再帰的手続 f(5) を実行したとき、出力される文字列は… 難しい / fe_b_v90_alg_trace_148 木構造 次の二分木を postorder(左、右、根)でたどる。4番… 難しい / fe_b_v90_alg_trace_149 トポロジカルソート 次の有向非循環グラフを、入次数0の頂点を小さい番号から取り出… 難しい / fe_b_v90_alg_trace_150 ビット処理 次のプログラムを実行したときの戻り値はどれか。 8ビット型: b ← 11… 難しい / fe_b_v90_alg_q151 ビット処理 次のプログラムを実行したときの戻り値はどれか。 8ビット型: b ← 10… 難しい / fe_b_v90_alg_q152 配列トレース 次のプログラムを実行したときの戻り値はどれか。 整数型の配列… 標準 / fe_b_v90_alg_q153 文字列処理 次のプログラムを実行したときの戻り値はどれか。 文字列型: … 標準 / fe_b_v90_alg_q154 スタック 次のスタック操作を実行したとき、最後にスタックの一番上にある… 難しい / fe_b_v90_alg_q155 循環キュー 次の循環キュー操作を実行したとき、戻り値はどれか。front… 難しい / fe_b_v90_alg_q156 二分探索 回転済みの昇順配列からkeyを探す。次のプログラムを実行した… 難しい / fe_b_v90_alg_q157 整列 次のクイックソートの分割処理を実行した後、戻り値はどれか。配… 難しい / fe_b_v90_alg_q158 グラフ探索 次の幅優先探索を実行したとき、戻り値はどれか。頂点番号は1から始まる。 隣… 難しい / fe_b_v90_alg_q159 スライディングウィンドウ 和が7以下である連続部分列の最大長を求める。戻り値はどれか。… 難しい / fe_b_v90_alg_q160