過去問解きまくり研究所 ホーム

アルゴリズムとプログラミング|平成27年度 春期 ITパスポート試験(特別措置試験) 問87

〔中問A・テクノロジ〕P社では,一度の解錠で同時に複数の社員が入退室することがあり,入室と退室の記録の数が合わないという問題が発生していることが分かった。そこで,毎日,入退室記録表を使って,前日の入退室の回数が一致しない社員がいないかどうかを確認することにした。次に示す入退室確認では,前日の日付で,同一区画での入室と退室の回数が一致していないICカード番号を調べる手順を示している。a,bに入れる字句の適切な組合せはどれか。

〔中問A の共通の記述(抜粋)〕入退室記録表の項目は 入退室年月日 / 入退室時刻 / ICカード番号 / 区画番号 / 入退室区分 である。入退室区分には,入室の場合は "1",退室の場合は "−1" が記録される。なお,P社は,社員に対して午前0時までに退社することを義務づけている。

〔前日の入退室確認〕
(1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。
(2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの [ a ] し,その結果の値と ICカード番号及び区画番号とを併せて表として記録する。
(3)(2)で記録した [ a ] した値が [ b ] ICカード番号と区画番号を出力する。

〔a・b の組合せ〕

ab
区画番号が1の場合は1を加算し,2の場合は2を加算奇数である
入退室区分の値を合計0でない
入退室時刻の入室と退室の時刻差を合計24時間を超える
レコードの個数を計数偶数である

解説

入室と退室の値の置き方に、答えそのものが仕込まれています。

入室に一、退室にマイナス一が記録されています。同じ人が同じ区画で入った回数と出た回数がそろっていれば、足し合わせると零になります。そろっていなければ零から離れます。だから、整列したうえで組ごとに値を合計し、零でないものを出せば足ります。二つの値は、足すだけで一致が分かるようにわざと選ばれています。件数を数える案は、そろっていれば偶数になるという向きだけが正しく、入室だけが二回でも偶数になるので逆は言えません。値の置き方そのものが、後の処理を決めていることがあります。入室と退室に足して零になる二つを選んでおけば、数え直さずに済みます。設計のときにこう決めておくと、確かめる手順が短くて済みます。後から数え方を工夫するより、記録する値を選び直すほうが効きます。仕組みを作る一手が、後の手間を決めます。

ほかの選択肢はなぜ違うのか

この問題に関係する言葉

出典:平成27年度 春期 ITパスポート試験(特別措置試験) 問87(改変:原典の図表をテキストに書き起こした)

この問題を演習で解く

同じ単元をまとめて解くならアルゴリズムとプログラミングへ。

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)