Skip to content
閲覧中:
1.0

WebページやGitHub、Notionなどにそのまま貼り付けられるMarkdown形式で、**「アルゴリズム100本ノック:第1回(基礎編)」**を作成しました。 ご自身の学習進捗管理や、ブログなどへの掲載にご活用ください。

基本情報技術者試験(科目B)アルゴリズム100本ノック

第1回:基本構造・データ構造・探索(問1〜10)

問1:変数の入れ替え(トレース)

次のプログラムを実行したとき、変数 x の値はいくらになるか。

Text Only
x ← 10
y ← 20
x ← x + y
y ← x - y
x ← x - y

  • A) 10

  • B) 20

  • C) 30

  • D) 0

問2:条件分岐の実行回数

次のプログラムにおいて、条件式の判定回数は合計で何回か。

Text Only
i を 1 から 5 まで 1 ずつ増やす
  もし (i が 3 より大きい) ならば
    表示する("A")
  それ以外
    表示する("B")
  もし終了
繰り返し終了
* A) 2回 * B) 3回 * C) 5回 * D) 6回

問3:配列と偶数の合計

要素数5の配列 A (添字は1から始まる) の中身が {3, 1, 4, 5, 2} であるとき、次の処理を実行した後の sum の値はいくらか。

Text Only
sum ← 0
i を 1 から 5 まで 1 ずつ増やす
  もし (A[i] が 偶数) ならば
    sum ← sum + A[i]
  もし終了
繰り返し終了
* A) 6 * B) 15 * C) 9 * D) 4

問4:スタックの操作

「スタック」に対して、次の順で操作を行ったとき、最後に「ポップ(取り出し)」される値はどれか。

Text Only
プッシュ(10) → プッシュ(20) → ポップ() → プッシュ(30) → ポップ()
* A) 10 * B) 20 * C) 30 * D) なし

問5:キューの操作

「キュー」に対して、次の順で操作を行ったとき、データが取り出される順番として正しいものはどれか。

Text Only
エンキュー(A) → エンキュー(B) → デキュー() → エンキュー(C) → デキュー()
* A) A, B * B) B, A * C) A, C * D) B, C

問6:線形探索の計算量

線形探索(リニアサーチ)において、要素数 n の配列から特定の値をさがすとき、最悪の場合の比較回数は何回か。 * A) 1回 * B) n / 2 回 * C) n 回 * D) log2 n 回

問7:二分探索の効率

整列済みの配列に対して「二分探索」を行う。要素数が15個の場合、最大で何回の比較で目的のデータを見つけられるか(または存在しないと判定できるか)。 * A) 4回 * B) 15回 * C) 8回 * D) 7回

問8:再帰関数の戻り値

次の再帰関数 f(n) について、f(4) を呼び出したときの戻り値はいくらか。

Text Only
関数 f(n)
  もし (n が 1 以下) ならば
    1 を返す
  それ以外
    n + f(n - 1) を返す
  もし終了
* A) 4 * B) 10 * C) 24 * D) 5

問9:ユークリッドの互除法

2つの整数 a, b の最大公約数を求めるアルゴリズムにおいて、a = 48, b = 18 のとき、最初の計算ステップ(a ÷ b の余り)の結果はいくらか。 * A) 6 * B) 12 * C) 2 * D) 30

問10:バブルソートの途中経過

バブルソートを用いて配列 {3, 2, 1} を昇順に並べ替える。左から右へ隣り合う要素を比較・入れ替える「走査」を1回完了した直後の配列の状態はどうなるか。 * A) {1, 2, 3} * B) {2, 1, 3} * C) {2, 3, 1} * D) {3, 2, 1}

解答一覧(自己採点用)

  1. B (値の入れ替え)
  2. C (ループ回数分判定される)
  3. A (4 + 2 = 6)
  4. C (最後にプッシュした30がポップされる)
  5. A (先入れ先出しなのでAの次にB)
  6. C (最後にある場合が最悪)
  7. A (2^4 = 16 なので4回)
  8. B (4+3+2+1=10)
  9. B (48 ÷ 18 = 2 余り 12)
  10. B (最大の3が右端に移動する)