SAシステムアーキテクト試験 午前Ⅰ

令和7年度春期 システムアーキテクト 午前Ⅰ 問3

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

A、B、Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合、データの出力順序は何通りあるか。
A、B、Cを右側からスタックへ挿入し、左側から取り出す操作を示した図。
A、B、Cを右側からスタックへ挿入し、左側から取り出す操作を示した図。

選択肢

  1. ア
    3
  2. イ
    4
  3. ウ
    5
  4. エ
    6
解き方のヒントを見る

操作の流れを整理する視点

与えられた操作を時系列に並べ、各時点で保持されている情報と次に起こる処理を丁寧に追うと、数え上げの見落としを減らせます。全体を一度に判断しないことが大切です。

この問題で問われていること

一つの流れを追跡する際、処理の区切りごとに状態を記録し、同じ結果として扱える経路と別に数えるべき経路を混同していないかを確認することに集中しましょう。特に順番を意識します。

視点

操作を読むときは、入力・保持・取り出し・出力という観点で時系列を整理し、各段階の状態を簡潔に書き留めます。個別の答えではなく、追跡の一貫性を重視します。

確認ポイント

  • 処理の順序と区切りを時系列で整理できているか
  • 各段階で保持される情報を記録し、更新漏れがないか
  • 同じ経路を重複して数えたり、異なる経路をまとめたりしていないか
正解と解説を見る

正解

ウ

解説

A、B、Cをこの順序でスタックへ挿入し、各データを1回ずつ取り出すと、後から入れたデータを先に取り出せるため、可能な出力順序は5通りになります。

理由

スタックでは、最後に挿入されたデータが最初に取り出されます。A、B、Cの入力途中で取出しを行う位置を変えると、ABC、ACB、BAC、BCA、CBAの5通りが作れます。

比較

CABのように、Cを先に取り出した後でAを取り出す順序は、Bが先にスタックへ入っているため実現できません。したがって、全ての並べ方ではなく、スタックの制約を満たす順序だけを数えます。

選択肢ア

これは不正解だよ。スタックでは、入力途中で取り出す位置を変えられるため、単純に入力順を保つ場合だけを数えることはできません。A、B、Cの挿入と取出しの組合せを確認すると、3通りより多い出力順序が実現します。

選択肢イ

これは不正解だよ。スタックの後入れ先出しによって、入力順のまま出力する場合や、途中で一部を取り出して順序を変える場合があります。実現可能な順序を重複なく確認すると、4通りでは足りません。

選択肢ウ(正解)

これは正解だよ。A、B、Cを順に入力し、各データを1回ずつ挿入・取出しする条件で、スタックの後入れ先出しを満たす出力順序はABC、ACB、BAC、BCA、CBAの5通りです。

選択肢エ

これは不正解だよ。データが3個なので並べ方自体は複数ありますが、スタックでは入力順序と後入れ先出しの制約を同時に満たす必要があります。6通りの順列を全て出力できるわけではなく、CABは実現できません。

学習のポイント

スタックの後入れ先出しと、入力途中の取出しによる順序変化を理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 システムアーキテクト試験 午前Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針