「基本情報の午後のアルゴリズムが中々解けない…」とお悩みではないでしょうか。
私は、基本情報・応用情報・セスぺ・ネスぺ・プロマネと取得して来ましたが、基本情報のアルゴリズム問題は決して簡単ではないと思っています。
元々、アルゴリズム問題を解くのは好きなので、久しぶりに5回分程を解きました。
解く過程で、回答するためのコツを洗い出したので書かせて頂きます。
基本情報処理技術者試験のアルゴリズム問題の趣旨
プログラミングで必要な能力を確認している
出題者が確認したいのは「アルゴリズムが正しく実装されているかを判断する能力があるか?」です。
このため、擬似言語のコードを読ませて動作を追跡させる問題が出題されます。
こうした能力はデバッグ作業や、既存のプログラムの改修でも役に立つため、プログラマとしては実践的な問題です。

必須選択とされているのは、コード作成などの実業務に深く関わる能力だからと推測しています。
問題のパターンは大きく2つ
パターンにより難易度も変わる
問題のパターンは2つに大別できます。
- プログラムの概説とコードを提示し、処理を追わて穴埋め問題などを解答させる
- 上記の1に加えて、プログラムの設計上の問題を指摘させ、その改善例を穴埋め形式で説明させる
傾向としてですが、パターン1の方がアルゴリズム上の話は難しいものが出題されています。
パターン2は、改善例から逆算すれば、プログラムの設計上の問題を見抜くのは難しくなく、また、元々のアルゴリズムも易しい物である事が多いです。

パターン2の場合は確実に得点しておきたいです。
プログラムの読み方のコツ
コツ1:擬似言語の仕様は覚えておく
アルゴリズム問題で出題される擬似言語の仕様は毎年同じであるため、事前に覚えておくことをお勧めします。
※以下、IPAの過去問より抜粋 (クリックで拡大表示できます)
この他にも「break」の仕様は覚えておいて下さい。
※breakはループを抜け出すという仕様です。
以下の処理では、breakに達すると、ループの途中であってもそのループを飛び出して 次の処理A に進みます。
i:0, i<100, 1
break
/* 繰り返しの終了箇所 */
次の処理A…
コツ2:日本語の説明とコードを結び付けながら読む
特にコードが複雑な場合は、コードの何行目~何行目までは***の処理を行う、等の説明を言葉で説明してくれています。
コードとその説明を対応づけながら、コードをブロック化していくと読み易いです。

コード上で難しい箇所には「/* */」でコメントもあるので助けになります!
コツ3:コード上の条件分岐を気にしながら読む
コードを読むときは、条件分岐に注意して読むと、コードの意図が汲み取りやすいです。
※以下、IPAの過去問より抜粋・編集 (クリックで拡大表示できます)

条件文を見れば、コード作成者の思考が透けて見えます。
コツ4:各変数の解説箇所には要チェック
長いコードを読んでいると「この変数は何の値を格納するものだっけ?」となる事が多いです。
時間のロスを防ぐために、変数の意味を説明している箇所はアンダーライン等を引くことをお勧めします。
※以下、IPAの過去問より抜粋 (クリックで拡大表示できます)

変数の意味を確認しに本文を読み返す時間が勿体ない!
コツ5:選択肢は全て確認する
基本的には4択問題で、1つが正解です。
時々あるやっかいなパターンが、誤りでは無いが最適ではない選択肢が含まれています。
例えばですが、以下の様な問題に注意です。
Bの選択肢が以下の様な場合、ア:a+b イ:b ウ:a エ:a-b (a>b>0)
アが一番大きい値だからアを選ぶと、解答はウだったりする場合があります。(アも間違いでは無いが、正確に表せていないため。)
時間を気にして焦っていると、答えだと思える選択肢が見つかったら、その後の選択肢は見ずに次の問題に行きたくなります。
最後まで選択肢を確認しないと引っかかる場合もあるので、注意して下さい。

焦らず、選択肢も含め問題文は丁寧に読んでください。
午後対策のお勧め問題集
午後問題、特にアルゴリズム問題は難易度は高く、問題集によっては解説を読んでもピンと来ないものもあります。
このため、午後問題の問題集は「解説の分かり易さ」で選ぶのがお勧めです。
以下の問題集は解説の分かり易さ、掲載されている問題数共にお勧めできます。
各分野(プログラミング以外)は5題ずつ、アルゴリズムのみ8題と、全体的に演習をしつつ、アルゴリズムを重点的に対策できます。
令和04-05年 基本情報技術者 試験によくでる問題集【午後】 情報処理技術者試験
注意点として、上の問題集にはプログラミング問題が掲載されていないので、プログラミングは別の問題集を使う必要があります。
プログラミングの問題集に関しては以下の記事をご参考にどうぞ

おわりに
私は応用・高度と持っていますが、基本情報のアルゴリズム問題はナメてかかって解ける様な易しい問題ではないと感じています。
ただ、受験者はみんな同じ問題が出題されている事には変わらず、問題をよく読んで、コードを読めば分かる様にはなっています。
コードを読み取る力に加えて、集中力も試されます。試験には体調を整えて臨んでください。
ご参考になりましたら幸いです。
以上
コメント