FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説:次のプログラムを実行したとき、戻り値はどれか。 文字列型: s ← "ABACC…
問題
次のプログラムを実行したとき、戻り値はどれか。
文字列型: s ← "ABACCB"
スタック: st ← 空
整数型: i
for (i を 1 から sの文字数 まで 1 ずつ増やす)
if (stが空でない and stの先頭 = sのi文字目)
stから1文字取り出す
else
stにsのi文字目を積む
endif
endfor
return stの要素数- ア 2
- イ 3
- ウ 4(正解)
- エ 6
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲
正解と解説
正解:4
見る場所:現在の文字とスタック先頭が同じなら取り出し、違えば積みます。文字列を左から1文字ずつ見て、スタックの状態だけを更新します。
| 読んだ文字 | 処理 | スタック状態 |
|---|---|---|
| A | 積む | A |
| B | 積む | A,B |
| A | 積む | A,B,A |
| C | 積む | A,B,A,C |
| C | 同じなので取り出す | A,B,A |
| B | 積む | A,B,A,B |
処理の追い方:最後のCで直前のCが消えますが、最後のBは先頭Aと違うので積まれます。最終状態はA,B,A,Bで要素数は4です。
間違えやすい点:同じ文字が文字列内にあるだけでは消えません。比較する相手は常にスタック先頭であり、文字列の直前文字ではありません。
選択肢の見分け方:2はCの取消し以外も消した誤り、6は取消し処理を無視した誤りです。
この問題について
公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。