最終更新日:2026年7月15日
fe fe-technology basic-theory
まず結論
条件付き文字列の数え方では、各位置を独立に選べるか、前の選択によって後ろの選択肢が変わるかを最初に確認します。
基本情報技術者試験では、次の切り分けが重要です。
各位置を独立に選べる
→ 選択肢の数を掛ける
前の選択で後ろが制限される
→ 形ごとに場合分けして足す
また、同じ文字や数字を繰り返してよい場合は、順列ではなく、各位置の選択肢を掛けて考えます。
直感的な説明
3文字のコードを作る場面を考えます。
各位置に数字0〜9の10種類を自由に使えるなら、
1文字目:10通り
2文字目:10通り
3文字目:10通り
なので、
10 × 10 × 10 = 1,000通り
です。
一方で、次のような条件がある場合は注意が必要です。
空白を使った後には数字を置けない
このとき、3文字の並びは自由ではありません。
数字・数字・数字
数字・数字・空白
数字・空白・空白
のように、許される形ごとに分けて数えます。
定義・仕組み
文字列や識別コードの数え方では、主に次の2つの法則を使います。
積の法則
複数の選択を順番に行い、それぞれの選択肢を組み合わせる場合は掛け算を使います。
1文字目が10通り
2文字目が10通り
3文字目が10通り
10 × 10 × 10
各位置を独立に選べることが前提です。
和の法則
互いに重ならない複数のパターンがある場合は、それぞれを数えて足します。
数字3文字のパターン
+
数字2文字と空白のパターン
+
数字1文字と空白2文字のパターン
つまり、
形ごとに掛け算
最後に足し算
という流れです。
重複を許す場合
同じ数字や文字を繰り返してよい場合、各位置で同じ選択肢を何度でも使えます。
例えば、10種類の数字から3文字を作り、同じ数字を繰り返してよいなら、
10 × 10 × 10 = 10³
です。
これは、異なる3個を並べる順列 10P3 ではありません。
このテーマは、基本情報技術者試験の「基礎理論」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、パスワード、識別コード、文字列、ビット列などの組合せ数を求める問題として出題されます。
まず、次の順番で確認します。
1. 各位置で使える文字は何種類か
2. 同じ文字を繰り返してよいか
3. 各位置を独立に選べるか
4. 禁止されている並びはあるか
各位置を独立に選べるなら、選択肢の数を掛けます。
英大文字26種類から4文字
重複使用可
26 × 26 × 26 × 26
一方、次のような条件があれば場合分けが必要です。
- 特定の文字は先頭に使えない
- 空白の後には文字を置けない
- 数字は末尾にしか置けない
- 同じ文字を連続して使えない
試験では、条件文を読み飛ばして単純に掛け算しないことが大切です。
科目Bでどう使う?
科目Bでは、文字列生成や探索処理の候補数を考える場面で役立ちます。
例えば、プログラムが次のような条件で候補を生成するとします。
先頭は必ず数字
途中から空白を使える
空白を使った後は空白だけ
この場合、全候補を作るループや再帰処理では、状態によって次に選べる文字が変わります。
まだ空白を使っていない
→ 数字または空白を選べる
すでに空白を使った
→ 空白だけ選べる
科目Bでは、単に答えの個数を求めるだけでなく、条件によって分岐する処理を読み取る視点が役立ちます。
よくある誤解・混同
| 誤解 | 正しい理解 |
|---|---|
| 各位置に11種類あるので、常に11の累乗でよい | 禁止パターンがある場合は、各位置を独立に選べない |
| 同じ数字を使える場合も順列を使う | 重複を許す場合は、各位置の選択肢を掛ける |
| 場合分けしたら最後も掛ける | 互いに重ならないパターンは最後に足す |
| 空白は1種類なので無視してよい | 空白を置いた後の制約が重要になることがある |
| 条件付きでも全体から禁止パターンを引けば必ず簡単 | 形ごとに直接数える方が分かりやすい場合も多い |
一番重要な判断軸は、各位置を独立に選べるかどうかです。
独立に選べる
→ 掛け算
独立に選べない
→ 状態や形で場合分け
まとめ(試験直前用)
- 各位置を独立に選べるなら、選択肢の数を掛ける
- 前の選択で後ろが制限されるなら、形ごとに場合分けする
- 互いに重ならないパターンは最後に足す
- 同じ文字を繰り返してよい場合は、順列ではなく累乗を考える
- 「先頭」「以降」「後には置けない」などの条件語を見落とさない