令和元年度 秋期 午前 問8
データ構造
最小限必要となるスタック
A, C, K, S, T の順に文字が入力される。スタックを利用して,S, T, A, C, K という順に文字を出力するために,最小限必要となるスタックは何個か。ここで,どのスタックにおいてもポップ操作が実行されたときには必ず文字を出力する。また,スタック間の文字の移動は行わない。
- ア1
- イ2
- ウ3
- エ4
答えと解説を見る
✓ これが正解ウ3
解説
順序を保ちたい三文字を、別々のスタックへ分けて置きます。
スタックは、最後に入れたものが最初に出てくる入れ物です。入力の並びと出力の並びを見比べると、後ろの二文字を先に出し、そのあとで前の三文字を入力どおりの並びで出すことが分かります。後ろの二文字は、届いたらどれかの入れ物に積んですぐ取り出せるので、そのための新しい入れ物は要りません。手間がかかるのは前の三文字です。これらは届いた並びを崩さずに出す必要があります。一つの入れ物へまとめて積むと、出てくるのは必ず逆の並びになってしまいます。二つに分けても、どちらかに二文字が重なり、その二文字がやはり逆に出ます。よって三文字それぞれを別の入れ物へ置くほかなく、三つあれば足ります。届いた並びのまま出したい文字が何個あるか、そこが必要な個数を決めています。出したい並びを先に書き出すのが、この種の問いの下ごしらえです。
ほかの選択肢はなぜ違うのか
- ア1:一つで足りるのは、出したい並びが届いた並びのちょうど逆になっているときです。今回は前の三文字を崩さずに出す必要があるので、逆順しか作れない一つでは届きません。入れ物の性質と、求められる並びが正面からぶつかっています。
- イ2:二つに分けても、前の三文字のうち二文字はどちらかで重なってしまいます。重なった二文字は逆の並びで出るため、求める形になりません。一つだけ足りない肢は、実際に積んで追うと詰まる場所がはっきり見えます。重なる二文字を見つけます。
- エ4:四つ用意すれば確かに作れますが、問われているのは最も少ない個数です。三つで足りると示せた時点で、これは答えになりません。最小を問う設問では、作れるかどうかと少なさの両方を見る必要があります。最小を問う設問に必ず添えられます。
出典:令和元年度 秋期 基本情報技術者試験 午前 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)