基本情報トップに戻る
B難易度: 2026年度

基本情報技術者 予想問題B 第73問

問題

次のプログラムで、配列arr = [3,1,4,1,5]に対して、ユニークな値の個数を返す関数の動作として正しい戻り値はどれか。 ○ 整数型: countUnique(整数型の配列: arr) 整数型: count ← 0 整数型: i, j for (i を 0 から arr の要素数−1 まで 1 ずつ増やす) 論理型: isUnique ← true for (j を 0 から i−1 まで 1 ずつ増やす) if (arr[i] = arr[j]) isUnique ← false endif endfor if (isUnique) count ← count + 1 endif endfor return count

選択肢

  1. 1ア 3
  2. 2イ 4
  3. 3ウ 5
  4. 4エ 2

正解

2. イ 4

詳しい解説を見る

解説

正解はイ。二重ループで各要素arr[i]について、自分より前の要素arr[0]〜arr[i−1]に同じ値がないかを調べ、初出の値だけをカウントする仕組みである。[3,1,4,1,5]をトレースすると、i=0の3は前に要素がなく初出でcount=1。i=1の1は3と不一致で初出、count=2。i=2の4も初出でcount=3。i=3の1はarr[1]=1と一致してisUniqueがfalseになり加算なし。i=4の5は初出でcount=4。よって戻り値は4である。ウの5は重複の1を見落とした場合、アの3やエの2は重複を多く数えすぎた場合の誤りである。「自分より前の要素とだけ比較する」ことで同じ値の2回目以降を除外するのがポイントで、内側ループの範囲がi−1までである点を正確に読み取れるかが問われる。

一問一答

科目A 180問+科目B 60問

Bの関連問題

この調子で演習を続けよう

スキマ資格では基本情報の全2398問を分野別・難易度別に体系的に学習できます。基本情報技術者は科目A(広く浅く)と科目B(プログラミング・アルゴリズム)の両輪での対策が必要です。