IPA過去問ドリル

令和元年度 秋期 基本情報技術者試験 午前 問8

テクノロジ/アルゴリズム

A, C, K, S, T の順に文字が入力される。スタックを利用して,S, T, A, C, K という順に文字を出力するために,最小限必要となるスタックは何個か。ここで,どのスタックにおいてもポップ操作が実行されたときには必ず文字を出力する。また,スタック間の文字の移動は行わない。

出典:令和元年度 秋期 基本情報技術者試験 午前 問8

正解:ウ

解説

スタックは後入れ先出しなので,一つのスタックに複数の文字を積むと,取り出す順序は積んだ順の逆になります。A, C, K, S, T の入力に対して S と T は入力直後にそのまま出力できますが,残る A, C, K はこの順で出力しなければなりません。同じスタックに2文字以上を積むと押し込んだ順の逆にしか出せないため,A,C,K は別々のスタックに1文字ずつ保持する必要があり,最小3個となります。

選択肢ごとの解説

  • 誤り。1個だと A, C, K を積んだ後の取出し順が K, C, A となり,要求される A, C, K の順に出せません。
  • 誤り。2個では A, C, K のいずれか2文字が同じスタックに入り,その2文字は入力順の逆にしか出せないため出力順を満たせません。
  • 正しい。A,C,K をそれぞれ別のスタックに1文字ずつ積み,S,T は入力直後に出力してから A,C,K を順にポップすれば実現できます。
  • 誤り。4個あれば実現できますが,3個で足りるので「最小限必要となる」個数ではありません。
基本情報技術者の過去問を演習モードで解く