FE Study
FE Study メニュー

学習記録はこのブラウザー内に保存されます。

ホーム問題を解く
ログイン不要・無料で学習

ONE QUESTION, ONE STEP

配列を学ぼう

選んで、確かめて、理解する。焦らず進めましょう。

科目Bアルゴリズム標準
QUESTION 67

次の処理は、昇順配列の異なる値を先頭へ詰め直す。終了後のwriteの値と、a[1]からa[write]までの値はどれか。要素番号は1から始まり、forの両端を含む。writeより後ろの値は結果に含めない。 整数型の配列: a ← {2, 2, 5, 5, 5, 9} 整数型: write ← 1 整数型: read for (read を 2 から 6 まで 1 ずつ増やす) if (a[read] ≠ a[write]) write ← write + 1 a[write] ← a[read] endif endfor

出典:本サイト オリジナル教材(2026年)

本サイトで独自に作成。IPAの試験問題からの転載ではありません。

公開日:

解答を一つ選んでください

選択肢を選んで、答え合わせをしましょう。

回答せずに正解・解説を確認する

正解:ア write = 3、{2, 5, 9}

この表示だけでは、回答数や正答率は変わりません。

解説

readが2のときは2と2で同じなので進めません。readが3のときに5が見つかり、writeを2にしてa[2]へ5を保存します。readが4、5では5が続くので変更せず、readが6で9をa[3]へ保存します。結果の範囲は先頭3要素の{2, 5, 9}です。

ア

異なる値が2、5、9の順で現れ、writeは1→2→3と進みます。

イ

先頭部分は途中で上書きされます。元の配列の先頭3要素をそのまま返す処理ではありません。

ウ

5が連続している間はa[write]も5なので、2個目の5を結果へ追加しません。

エ

ループ回数や配列長は結果の要素数と一致しません。writeは値が変わったときだけ増えます。

関連知識

readは調査位置、writeは保存済み部分の最後を表します。昇順という前提があるので同じ値は連続し、直前に保存した値との比較だけで重複を除けます。未整列の配列では離れて現れる同値をこの処理だけでは除けません。

間違えやすいポイント

配列全体が短くなったと思わないこと。要素数は変わらず、結果として使う範囲が短くなります。読み取る位置より前へ書くので、未読の値を壊さない点も確かめます。

覚え方

readで調べ、writeで結果の末尾を管理する。

実務での意味

整列済みログの連続重複をまとめる処理で、追加配列を作らず有効な先頭範囲だけを返す設計に使います。

解説:本サイト編集部によるオリジナル文章

この問題の前後に、アルゴリズムの基礎知識ガイドで、 仕組み・比較・解き方を確認できます。 手順を確かめたい方は連続達成回数を求める擬似言語を、一行ずつ追跡するの実習へ。 この問題の誤りを報告する(GitHub)。問題IDとURLを入力した下書きが開きます。自動投稿は行いません。 投稿は公開されるため、氏名・住所・メールアドレス・学習記録は記入しないでください。 詳しくはお問い合わせ窓口をご覧ください。