過去問・一問一答
基本情報技術者試験 の演習問題
基本情報技術者試験の公開演習問題 1008問を、分野別に整理しました。各問、正解と選択肢ごとの解説つき。気になる問題を選んで「なぜその答えになるのか」まで確認できます。
各問に出典と年度を表示しています。「original」は当サイトのオリジナル問題で、年度は制作年度です。公式試験の年度別セットではありません。公開問題・解説の閲覧は無料・登録不要です。
アルゴリズムとプログラミング
アルゴリズムとプログラミング120問
配列/ループ計算次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008, 231, 14}…整列計算次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1 パス)に相当する。arr = {25, 13,…探索計算次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10, 12, 14}(要素数 7、添字は…再帰計算次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか連結リスト計算単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード head から順に val…スタック・キュー計算スタックに対する push(積む)と pop(取り出し、取り出した値を返す)を行う。空のスタックに対して次の擬似言語を実行したとき、最後に実行される…ビット演算計算次の擬似言語で、<< は左シフト、AND はビットごとの論理積を表す。整数 x = 200 を与えて実行したとき、戻り値(10 進数)はどれか文字列処理計算文字型の配列 s には 'a' と 'b' が交互に並んだ全 24 文字(s = {'a','b','a','b','a','b','a','b','a',…ループ計算次の手続 sumTo は、1 から n までの整数の総和を返すことを意図している。n=10 のとき正しく 55 を返すように空欄 [ a ]…スタック・キュー計算キューに対する enqueue(末尾に追加)と dequeue(先頭から取り出す)を行う。空のキューに対して次の擬似言語を順に実行したあと、キューの先頭にあ…ループ計算次の擬似言語はユークリッドの互除法で 2 整数の最大公約数を求める手続である。gcd(840, 360) を実行したとき、戻り値はどれか。mod…ループ計算次の擬似言語の内側の文「cnt ← cnt + 1」が実行される回数はどれか配列/集計計算次の擬似言語で表される手続 range は、テストの得点を格納した配列 arr の最高点と最低点の差(得点幅)を返すことを意図している。arr =…配列/集計計算次の擬似言語で表される手続 average は、得点を格納した配列 arr の平均点を整数で返す。「÷ の商」は整数除算(小数部を切り捨て)を表す。arr…2次元配列計算3 行 3 列の 2 次元配列 m に次の得点が格納されている(単位は点、添字は行・列とも 1 から)。 m[1][1]=14, m[1][2]=5,…配列/操作計算次の擬似言語で表される手続 reverse は、配列 arr を先頭と末尾から内側へ向けて要素を交換し、配列を反転させる。arr = {18, 47,…配列/集計計算次の手続 countDistinct は、整数型の配列 arr に現れる値の種類数(重複を除いた個数)を返す。すでに前方に同じ値が現れていれば数えない。ar…探索計算次の手続 countAbove は、整数型の配列 arr のうち、しきい値 t より大きい(t は含まない)要素の個数を返す。arr = {45, 12,…数値演算計算次の手続 digitSum は、正の整数 n の各桁の数字の和を返す。mod は剰余、「÷ の商」は整数除算を表す。n = 4825…数値演算計算次の手続 toBinary は、正の整数 n を 2 進数の文字列に変換して返す。求めた 2 進数の桁を左から正しく並べた結果になる。mod は剰余、「÷…数列計算次の手続 fib は、フィボナッチ数列の第 n 項を反復で求める。数列は第 0 項 = 0、第 1 項 = 1、第 k 項 = 第 (k−1) 項 + 第…配列/集計計算次の手続 prefixLast は、得点を格納した配列 arr の累積和を求め、最後の累積値(全要素の合計に等しい値)を返す。acc[i] には…探索計算次の手続 argMax は、配列 arr の中で最大値が最初に現れる位置(添字、1 から)を返す。比較は厳密な大なり(>)で行う。arr = {24,…2次元配列計算3 行 3 列の 2 次元配列 m に次の値が格納されている(添字は行・列とも 1 から)。 m[1][1]=5, m[1][2]=9,…文字列処理計算次の擬似言語は、文字型の配列 s が回文(前から読んでも後ろから読んでも同じ)かどうかを調べ、回文なら "true"、そうでなければ "false"…文字列処理計算次の擬似言語は、文字型の配列 s を走査して文字 'a' を 'o' に置き換え、置き換えた回数を返す手続である。s = {'b','a','n','a',…文字列処理計算次の擬似言語は、文字型の配列 s の中に長さ 2 の部分文字列「a の次に b」が現れる回数を数える手続である。位置を 1 つずつずらして調べ、重なりも許す…スタック・キュー計算次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正しいかを調べ、正しければ "OK"、誤っていれば "NG" を返す手続である。push…スタック・キュー計算次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら push、演算子なら上位 2 値を…キュー計算整数を格納したキュー(先頭から取り出す FIFO)がある。次の手続は、キューの要素が1個になるまで「先頭の2つを取り出し、その和を末尾に追加する」ことを繰り…文字列処理計算次の擬似言語は、文字型の配列 s に含まれる母音('a','e','i','o','u' のいずれか)の個数を数える手続である。s =…文字列処理計算次の擬似言語は、文字型の配列 s を連長圧縮し、連続する同じ文字を「文字+連続数」の 2 文字で表したときの圧縮後の総文字数を返す手続である。例えば…文字列処理計算次の擬似言語はシーザー暗号で英小文字を 3 文字後ろへずらす手続である。各文字の 0 起算の番号('a'=0, 'b'=1, …, 'z'=25)に 3…文字列処理計算英小文字の文字コードは 'a'=97, 'b'=98, …, 'z'=122 であり、対応する英大文字は小文字より 32 だけ小さい('A'=65)。次の擬…スタック・キュー計算次の擬似言語は、スタックを使って文字型の配列 s を逆順にした文字列を返す手続である。まず全文字を順に push し、次に空になるまで pop…文字列処理計算次の擬似言語は、文字型の配列 s から連続して重複する文字を 1 つにまとめ(例: 'aabb' → 'ab')、まとめた後の文字数を返す手続である。先頭文…
残り84問を表示
整列計算次の擬似言語は選択ソートの外側ループ 1 回目(先頭位置 1 を確定させる 1 パス)に相当する。arr = {8, 140, 7, 26, 3}(要素数…整列計算次の擬似言語は挿入ソートである。arr = {40, 15, 28, 9, 33}(要素数 5、添字は 1 から)を与えたとき、外側ループ変数 i が 3…整列計算次の擬似言語は、ともに昇順整列済みの 2 つの配列 L と R を 1 つの昇順配列にマージする手続である。L = {11, 27, 38}、R =…木構造計算空の 2 分探索木に対して、50, 30, 70, 20, 60 の順に値を挿入した。次の擬似言語に従ってさらに値 65 を挿入したとき、65…連結リスト計算単方向連結リスト head→[10]→[20]→[30]→NULL がある。各ノードは val と next をもつ。次の擬似言語は、値 target…再帰計算次の擬似言語は再帰によって b の e 乗を求める手続である。power(2, 10) を実行したとき、戻り値はどれか再帰計算次の擬似言語は、n 枚の円盤を 3 本の杭を使って移す「ハノイの塔」で、1 枚を動かすたびに move を 1 回呼ぶ。hanoi(6, A, C, B)…探索計算次の擬似言語は昇順配列に対する二分探索である。arr = {3, 7, 11, 15, 19, 23, 27, 31, 35}(要素数 9、添字は 1…再帰計算次の擬似言語は再帰でフィボナッチ数を求める手続である(fib(0)=0, fib(1)=1)。fib(10) を実行したとき、戻り値はどれか配列/ループ計算次の手続 findMax は、整数型の配列 arr の最大値を返すことを意図している。arr = {18, 42, 7, 33, 29} のとき正しく…再帰計算次の擬似言語は再帰で配列 arr の先頭 n 要素の合計を求める手続である。arr = {7, 12, 5, 20, 6}(要素数 5、添字は 1…再帰計算次の擬似言語は、非負整数 n の各桁の数字の和を再帰で求める手続である。mod は剰余、÷ の商は整数除算を表す。digitSum(4825)…2次元配列計算4 行 4 列の 2 次元配列 m に次の値が格納されている(添字は行・列とも 1 から)。 m[1][*]=7,2,9,4 m[2][*]=3,8,1,6…配列/集計計算次の手続 mode は、整数型の配列 arr の中で最も多く出現する値(最頻値)を返す。arr = {3, 7, 3, 5, 7, 3, 2, 7,…配列/集計計算次の手続は、配列 arr に対し窓幅 3 の移動平均(直近 3 要素の平均、小数部は切り捨て)を求め、添字 i の結果を res[i] に格納する。「÷…配列/集計計算次の手続 maxSub は、配列 arr の連続した区間の和のうち最大となる値を返す。arr = {3, -4, 6, -1, 5, -7, 2}(要素数…配列/集計計算次の手続 maxGap は、配列 arr の隣り合う 2 要素の差の絶対値のうち最大のものを返す。abs は絶対値を返す。arr = {12, 19,…配列/操作計算次の手続 rotateRight は、配列 arr の全要素を右へ 1 つずらし、末尾の要素を先頭へ移す(右回転)。arr = {51, 62, 73,…配列/集計計算次の手続 countAtLeast は、配列 arr の中で値が k 以上である要素の個数を返す。arr = {45, 80, 60, 30, 75,…2次元配列計算3 行 3 列の 2 次元配列 m に次の値が格納されている(添字は行・列とも 1 から)。 m[1][*]=4,7,2 m[2][*]=5,1,8…配列/集計計算次の手続 passCount は、得点配列 arr のうち合格基準 th 点以上を取った人数を返す。arr = {78, 92, 85, 64, 80,…配列/集計計算次の手続 binCount は、得点配列 arr の各値を 10 点刻みの階級(0〜9 点, 10〜19 点, …, 90〜99 点)に分け、各階級の度数を…2次元配列計算3 行 3 列の 2 次元配列 m に次の値が格納されている(添字は行・列とも 1 から)。 m[1][*]=12,47,9 m[2][*]=33,8,51…配列/集計計算次の手続 maxWindow は、配列 arr の連続する 2 要素の和のうち最大となる値を返す。arr = {8, 3, 11, 6, 2,…探索計算次の擬似言語は昇順に整列された配列 arr に対する二分探索である。arr = {5, 9, 13, 17, 21, 25, 29, 33, 37,…探索計算次の手続 linearSearch は、配列 arr を先頭から走査し target と一致する最初の要素を見つけたら直ちに添字を返す。arr =…整列計算次の擬似言語は選択ソートで配列を昇順に整列する手続である。各外側ループで未整列部分の最小値を探し、その位置と先頭が異なる場合だけ交換する。arr =…整列計算次の擬似言語は計数ソートの前処理である。値が 1〜5 の整数だけからなる配列 data = {3, 1, 5, 2, 3, 1}(要素数…整列計算次の擬似言語は、値が 0 以上 5 以下の整数だけからなる配列 arr の各値の出現回数を数え、集計用配列 cnt(添字 0〜5)に格納する手続である。ar…整列計算次の擬似言語はシェルソートの一部であり、間隔 gap を 4 として、間隔 gap だけ離れた要素どうしを挿入ソートで整列する 1 段階分の処理である。ar…探索計算次の手続 minMaxCode は、配列 arr を 1 度だけ走査して最大値 mx と最小値 mn を同時に求め、mx × 100 + mn…探索計算次の手続 checkOrder は、配列 arr が昇順に整列しているかを調べるため、隣り合う要素で前が後ろより大きい(arr[i] >…探索計算次の手続 kthSmallest は、配列 arr を選択ソートと同じ要領で小さい順に k 回だけ確定させ、k 番目に小さい値を返す。arr = {37,…探索計算次の擬似言語は昇順配列に対する二分探索である。arr = {4, 8, 12, 16, 20, 24, 28, 32, 36}(要素数 9、添字は 1…探索計算次の手続 firstIndex は、配列 arr を先頭から走査し target と最初に一致した要素の添字(1 から)を返す。同じ値が複数あっても最初の…整列計算次の擬似言語は選択ソートで要素数 7 の配列 arr を昇順に整列する手続である。内側の文「if (arr[j] < arr[minPos])」による比較が…再帰計算次の擬似言語は最大公約数を求める再帰手続である。gcd(252, 198) を呼び出したとき、戻り値はどれか。mod は剰余を表す再帰計算次の再帰手続 f に対し、f(5) を最初に 1 回呼び出した。これを含め、手続 f が呼び出される総回数(f が起動された延べ回数)はどれか再帰計算次の 2 つの手続は互いを呼び出す相互再帰で、整数が偶数か奇数かを判定する。isOdd(7) を呼び出したとき、戻り値はどれか。true…再帰計算次の再帰手続 prod は、配列 arr の添字 i 番目から末尾までの要素の積を返す。arr = {2, 5, 3, 4}(要素数 4、添字は 1…再帰計算文字型の配列 s に対し、関数 tail(s) は先頭を除いた残りの配列、isEmpty(s) は空配列のとき true を返す。次の再帰手続…再帰計算次の再帰手続 toBin は、非負整数 n を 2 進数の文字列として組み立てて返す。「÷ の商」は整数除算を表し、& は文字列連結を表す。toBin(13…再帰計算二分木の各ノードは left(左の子)と right(右の子)への参照をもち、子がなければ NULL である。根 A の左の子が B、右の子が C、B…再帰計算次の再帰手続 comb は組合せの数 C(n, r) を求める。パスカルの関係 C(n,r)=C(n−1,r−1)+C(n−1,r)…再帰計算次の再帰手続 sumAcc は、引数 acc に途中結果を蓄積しながら 1 から n までの総和を求める末尾再帰である。sumAcc(4, 0)…再帰計算次の再帰手続 maxFrom は、配列 arr の添字 i 番目から末尾までの最大値を返す。max(x, y) は x と y の大きい方を返す関数である。…再帰計算単方向連結リストの各ノードはメンバ val と next(次ノードへの参照。なければ NULL)をもつ。次の再帰手続 count はノード数を数える。hea…再帰計算次の再帰手続 f は n を 3 ずつ減らしながら呼び出される。f(11) を呼び出したとき、同時にスタック上に積まれる f のフレーム数の最大値(再帰の深…文字列処理計算文字型の配列 s の中で、長さ 2 のパターン pat(pat[1], pat[2])が最初に連続して現れる先頭の添字を返し、見つからなければ 0…文字列処理計算文字型の配列 s 中の文字 old を文字 new に置き換え、置き換えた回数を返す次の手続に、s = {'a','x','a','x','x','a','…文字列処理計算区切り文字 ' '(空白)で区切られた文字列をトークン(単語)に分割したとき、トークンの個数を返す次の手続に、s = {'a','b',' ','c','…文字列処理計算数字文字('0'〜'9')だけからなる文字型の配列 s を整数値に変換する次の手続に、s = {'2','0','5','3'}(要素数 4、添字は 1…文字列処理計算文字型の配列 s 中の英小文字('a'〜'z')を大文字に変換し、変換した文字数を返す次の手続に、s = {'A','b','3','c','D','e'}…文字列処理計算文字型の配列 s 中で同じ文字が連続する最長の長さを返す次の手続に、s = {'a','a','b','b','b','c','a','a'}(要素数…文字列処理計算文字型の配列 s 中に含まれる数字文字('0'〜'9')の個数を返す次の手続に、s = {'a','1','b','2','c','3','d','4'}(…文字列処理計算2 つの文字型配列 a, b(ともに英小文字、要素数は等しい)が互いに並べ替えで一致するか(アナグラムか)を判定する次の手続に、a =…文字列処理計算2 つの文字型配列 a, b を辞書順で比較し、a が b より小さければ -1、大きければ 1、等しければ 0 を返す次の手続に、a =…文字列処理計算文字型の配列 s から、開始位置 from から長さ len 個の文字を取り出して新しい配列 r を作る次の手続に、s = {'p','r','o','g'…文字列処理計算2 つの文字型配列 a, b の先頭から一致が続く文字数(共通接頭辞の長さ)を返す次の手続に、a = {'f','l','o','w','e','r'}(要…文字列処理計算文字型の配列 s の中に、長さ 2 のパターン p(p[1], p[2])が出現する回数(位置が重なる出現も別々に数える)を返す次の手続に、s =…スタック・キュー計算次の擬似言語は、演算子 + と × だけからなる中置記法の式を、スタックを用いて後置記法(逆ポーランド記法)に変換する手続である。演算子の優先順位は ×…スタック・キュー計算次の擬似言語は、丸括弧 ( ) と角括弧 [ ] が混在した文字列の対応が正しく取れているかをスタックで判定する手続である。開き括弧は push…スタック・キュー計算1, 2, 3, 4 をこの順に push できるスタックがある。push と pop は任意の順序で混在してよいが、push は必ず 1→2→3→4…スタック・キュー計算2 つのスタック inStk と outStk を用いてキューを実現する。enq は inStk に push する。deq は outStk が空なら…スタック・キュー計算次の擬似言語は、キュー q を用いて整数を処理する。先頭から値を取り出し、それが 3 で割り切れれば total に加えて捨て、割り切れなければ「値−1」を…スタック・キュー計算両端キュー(デック)dq に対し、pushFront(先頭に追加)、pushBack(末尾に追加)、popFront(先頭から取り出して返す)、popBac…スタック・キュー計算値スタック valStk と最大値スタック maxStk の 2 本を使い、push 時に「これまでの最大値」も同時に積むことで、頂上の最大値を即座に参照で…スタック・キュー計算空のスタックに対し、文字 'P' は次の数を push する操作、文字 'o' は pop する操作(取り出すだけで値は捨てる)を表す。push…スタック・キュー計算印刷ジョブを先着順(FIFO)で処理するキュー q がある。各ジョブは (id, ページ数) を持ち、deq したジョブのページ数を累計し、累計が初めて…スタック・キュー計算次の擬似言語は、文字列 s を左から走査し、スタック頂上と同じ文字が来たら頂上を pop して両者を消し、異なれば push する処理で、隣接した同一文字の…スタック・キュー計算容量 4 の循環キュー(リングバッファ)を配列 buf[1..4] で実装する。head は次に取り出す位置、tail は次に入れる位置で、初期は…スタック・キュー計算同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B) キュー(enqueue 後にすべて…連結リスト計算単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。次の擬似言語は、先頭 head…連結リスト計算単方向連結リストの各ノードは val(整数)と next(参照、なければ NULL)をもつ。次の擬似言語は、値 target をもつ最初のノードを 1…連結リスト計算単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、リスト a の末尾にリスト b をつなげ、連結後の先頭を…連結リスト計算単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、low を 1 歩・high を 2…木構造計算空の 2 分探索木に対し、次の擬似言語の挿入規則に従って 400, 200, 600, 100, 300, 500 をこの順に挿入した。挿入後の木において、…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500 の左の子=300、500 の右の子=800、300…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500 の左の子=300、500 の右の子=800、300…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500 の左の子=300、500 の右の子=800、300…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=A、A の左の子=B、A の右の子=C、B の左の子=D、C…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=A、A の左の子=B、A の右の子=C、B の左の子=D、C…木構造計算次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500 の左の子=300、500 の右の子=800、300…木構造計算2 分探索木に 500, 250, 750, 100, 400, 600, 900 をこの順に挿入してある(小さければ左、大きければ右)。次の擬似言語は、根…
このページの1,008問は一部です。登録すると基本情報技術者試験の全4,036問。
一問ごとにAIが「なぜ正解か・なぜ他が誤りか」まで解説。まちがえた問題は自動で復習に回り、暗記カードと模試まで無料で使えます。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
過去問だけで合格できますか?
基本情報技術者試験は2023年の改訂以降、本試験問題が原則非公開で、公開されているのはサンプル問題が中心です。旧制度の過去問は科目Aの知識確認には有効ですが、科目B(擬似言語のアルゴリズム)は形式に慣れる演習量が合否を分けます。このページの演習問題は、解説つきで科目A相当の論点を一問ずつ確認できるように作っています。
