基本情報技術者試験 令和4年サンプル問題の問4について
Q&A
Closed
基本情報技術者試験 令和4年サンプル問題の問4(https://www.ipa.go.jp/shiken/syllabus/ps6vr7000000oett-att/fe_kamoku_b_sample.pdf) について、for文で1ずつ増やされるiとjの動きが分からない部分があります。
この問題の関数でやりたいことは
{3,0,0,0,0}
{0,2,2,0,0}
{0,0,0,1,3}
{0,0,0,2,0}
{0,0,0,0,1}
という整数型配列の配列(matrix)から0以外の数字を拾い、sparse[1]に拾った数字の行の要素番号、sparse[2]に拾った数字の列の要素番号、sparse[3]に拾った数字そのものを追加して最後に出力するものだと理解しています。
記述されているプログラムにしたがって、for文でiを1から5まで(matrixの行数)、同じくfor文でjを1から5まで(matrixの列数)まで増やしながらトレースしていたのですが、matrix[2][3]の2を拾う時の動きやmatrix[3][5]を拾った後に[4][4]で2を拾う動きが理解できません。
i←1
j←1
Matrix[1][1]≠0Ture
sparse[1]{1,}
sparse[2]{1,}
sparse[3]{3,}
i←2
j←2
Matrix[2][2]≠0Ture
sparse[1]{1,2}
sparse[2]{1,2}
sparse[3]{3,2}
ここまではわかるのですがこのあと
i←3
j←3
Matrix[3][3]≠0Falese
になってしまい
i←2
j←3
というように正解の道筋で処理する理由とやり方が分かりません。
また、同じような理由で、
matrix[3][5]
を通過した後に
matrix[4][4]
を処理するには
j←5
だったものをあとから
j←4
にしなければいけないようにしか見えず、しかしプログラム中に数字を減らす処理があるように見えないように思い、どうしたら解けるのか分からなくなっています。
この問題を解説している動画やサイトを色々閲覧して見たのですが、問題の全てをトレースしているものはなく、どうしたらこのような動きになるのか分からなくなってしまいました。
独学のため的はずれな理解をしている部分があるかもしれません。教えていただけると幸いです。
IPA「基本情報技術者試験 令和4年サンプル問題の問4」
https://www.ipa.go.jp/shiken/syllabus/ps6vr7000000oett-att/fe_kamoku_b_sample.pdf