令和3年度春期 応用情報技術者試験 午前 問5

分野:アルゴリズムとプログラミング|実際に出題されたIPA過去問題

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

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

正解:ウ

AI解説

3個のデータをスタックに通す際に得られる出力順列の数は、カタラン数C_nで求められ、n=3のときC_3=5通りとなる(公式:C_n=(2n)!/{(n+1)!・n!})。全順列6通り(3!)のうち、スタックの後入れ先出し(LIFO)の制約によって実現不可能な1通り(この場合はB, C, Aの順)が除かれ、5通りに絞られる。 ア: 全順列6通りより少ない数だが、正しいカタラン数の値ではない。 イ: 同様に候補となりうる数だが、n=3のカタラン数の値ではない。 ウ: 正しい。3個のデータに対するスタックの挿入・取出しで実現可能な出力順序の数はカタラン数C_3=5通りである。 エ: 3個のデータの全順列の数(3!=6通り)であり、スタックのLIFO制約によって実現できない順序が1通り存在するため、実際に出力可能な順序数はこれより少ない。 💡 スタックを介した出力順列の総数はカタラン数で求まる、という定石を覚えておくと計算が速い。n=1で1通り、n=2で2通り、n=3で5通りと押さえておくとよい。

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

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

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

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

同じ分野(アルゴリズムとプログラミング)の過去問