FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER
基本情報技術者の問題解説
問題
次のプログラムを実行したとき,戻り値はどれか。
文字列型: 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
正解: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は取消し処理を無視した誤り。
この問題について
公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。
公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。