平成28年度春期 応用情報技術者試験 午前 問5

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

A,B,Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合,データの出力順序は何通りあるか。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  3
  2.  4
  3.  5
  4.  6
解答・解説を見る

正解:ウ

AI解説

スタックはLIFO(後入れ先出し)構造である。A、B、Cの順に到着するデータをそれぞれ1回pushし1回popするとき、可能な出力列を数え上げる。ABC、ACB、BAC、BCA、CBAの5通りが可能で、CABだけが不可能なので、答えは5通り(ウ)である。CABが不可能なのは、Cを最初に出力するにはA、Bがスタックに積まれている必要があり、その時点で上にあるBより先に下のAを取り出せないためである。 ア: 3通りは数え漏れによる誤りである。 イ: 4通りは数え漏れによる誤りである。 ウ: 正解。3要素の全順列6通りのうちCABのみ実現不可能で、5通りとなる。 エ: 6通りは全順列が可能とした誤りで、スタックのLIFO制約によりCABは実現できない。 💡 n個の入力に対するスタックの可能な出力順序数はカタラン数C(2n,n)/(n+1)で、n=3なら5となる。「最初にCが出たら、残りは必ず後入れのBが先」のように、逆順制約で不可能パターンを見つけるのが実戦的。

出典:平成28年度 春期 応用情報技術者試験 午前 問5 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問