過去問解きまくり研究所 ホーム

令和元年度 秋期 午前 問8

データ構造

最小限必要となるスタック

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

答えと解説を見る

✓ これが正解ウ3

解説

順序を保ちたい三文字を、別々のスタックへ分けて置きます。

スタックは、最後に入れたものが最初に出てくる入れ物です。入力の並びと出力の並びを見比べると、後ろの二文字を先に出し、そのあとで前の三文字を入力どおりの並びで出すことが分かります。後ろの二文字は、届いたらどれかの入れ物に積んですぐ取り出せるので、そのための新しい入れ物は要りません。手間がかかるのは前の三文字です。これらは届いた並びを崩さずに出す必要があります。一つの入れ物へまとめて積むと、出てくるのは必ず逆の並びになってしまいます。二つに分けても、どちらかに二文字が重なり、その二文字がやはり逆に出ます。よって三文字それぞれを別の入れ物へ置くほかなく、三つあれば足ります。届いた並びのまま出したい文字が何個あるか、そこが必要な個数を決めています。出したい並びを先に書き出すのが、この種の問いの下ごしらえです。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)