アルゴリズムとプログラミング

基本情報技術者試験文字列処理」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
数字文字('0'〜'9')だけからなる文字型の配列 s を整数値に変換する次の手続に、s = {'2','0','5','3'}(要素数 4、添字は 1 から)を与えて実行したとき、戻り値はどれか。digit(c) は文字 c に対応する数値('0'→0, …, '9'→9)を返す関数とする。
○整数型: parseInt(文字型の配列: s)
  整数型: v ← 0
  整数型: i
  for (i を 1 から sの要素数 まで 1 ずつ増やす)
    v ← v × 10 + digit(s[i])
  endfor
  return v
3502
2053
10 進数
253
正解
2053

先頭桁から v×10+digit を繰り返すと位取りが正しく組み上がる。2, 20, 205, 2053 と進み最終的に 2053 となるため イが正しい。

?選択肢ごとの解説

ア ×桁を逆順に組み立て 3502 とした、末尾から処理したと誤認した順序の誤りである。
イ ○先頭桁から v×10+digit を繰り返すと位取りが正しく組み上がる。2, 20, 205, 2053 と進み最終的に 2053 となるため イが正しい。
ウ ×具体的な数値ではなく『10 進数』という分類名を答えた、戻り値の型と値を取り違えた不適切な選択である。
エ ×途中の桁 '0' を読み飛ばして 2,5,3 だけを連結し 253 とした、ゼロの桁を落とした誤りである。

くわしく

数値文字列のパースは『v×基数+桁』を上位桁から繰り返すホーナー法である。基数 10 を掛ける位置と桁の加算順序が値を決める核心である。

本番での押さえどころ

試験のコツ

v を 1 桁追加するたびに『10 倍してから足す』と声に出し、ゼロも 1 桁として扱う。

覚え方

『前の値を 10 倍して新しい桁を足す』をホーナー法として覚える。

よくある誤り

途中のゼロを無視したり、末尾から処理して桁を反転させるミスが多い。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0088

【基本情報技術者試験】文字列処理の問題 — 解答・解説|ukamiru 過去問