SC情報処理安全確保支援士試験 午前Ⅰ

平成30年度秋期 情報処理安全確保支援士 午前Ⅰ 問4

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

2次元配列4[ヵ7] (ヵ、 7はいずれも0 ^ 99の値をとる) の77である要素4[7、7] は全部で幾つか。

選択肢

  1. ア
    4851
  2. イ
    4950
  3. ウ
    4999
  4. エ
    5.050
解き方のヒントを見る

午前I 問04

`i` と `j` はどちらも 0 から 99 まで動くよ。条件が「対角線より下側」のマスを数えるイメージなら、100×100 の表で左上から右下へ引いた斜め線の下にあるマスを数えればOK。これは階段みたいに 0 個、1 個、2 個…、99 個と増えていくので、合計は三角数で `99×100/2 = 4950` になるよ。

この問題で問われていること

二次元配列を表や座席表みたいに見立てて、条件に合う `i、 j` の組が全部でいくつあるかを数えられるかがポイントだよ。

Lower-triangular Element Count

count pairs (i、j) with 0<=j<i<=99 using a triangular number

1+2+...+99 = 99*100/2 = 4950

確認ポイント

  • 100×100 全体から対角線を引くだけでもよい。
  • `i=j` は含まない。
  • 4950 を選ぶ。
正解と解説を見る

正解

イ

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア

不正解だよ。0〜99の100個の番号で、i>jになる組合せは、下三角のマスを数える感じ。1+2+...+99=4,950個なので、4,851は数え漏れがある数だね。座席表の左下エリアを数えるのに、何席か飛ばしてしまったイメージだよ。

選択肢イ(正解)

この選択肢は提示では不正解扱いだけど、計算上は1+2+...+99=99×100÷2=4,950なので、本来この問題の正しい値になるよ。100×100の表で対角線より下だけを数える、という見方をすると直感的に分かりやすいよ。提示データ側の正誤判定に不整合がある可能性が高いね。

選択肢ウ

不正解だよ。4,999は4,950より49個多いので、条件に合わないマスまで混ぜて数えているよ。『iがjより大きい席だけ』と言われているのに、境界線近くの席を余分に入れてしまった感じだね。

選択肢エ

不正解だよ。5,050は、i>=j、つまりi=jの対角線100個も含めた数になるよ。今回の条件はi>jで『同じ番号はダメ』だから、合鍵でいうと“自分自身との組合せ”まで入れてしまっているイメージだね。

出典:独立行政法人 情報処理推進機構(IPA)平成30年度秋期 情報処理安全確保支援士試験 午前Ⅰ 問4(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針