question2024
@question2024 (step1engineer)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Java Silver se11 黒本4章 2重ループ問題

何に関する投稿か

Java Silver SE11 黒本 4章
二重ループの問題についての投稿です。
考え方について皆様にアドバイスを
いただきたく投稿を決めました。

何に関する意見を聞きたいのか

皆様が、問題9を解くとなった場合、
添付写真(解説①〜③)のように
一つずつ表に起こして
回答する方法をとられますか。
今度JavaSilverを受験するのですが、
このような問題がでた場合、
解説のように表に起こして回答を
導くのがベストな方法か知りたいです。
私のこの問題への理解度ですか、
1回目では解けず、解説を熟読して、
やっと、なるほどとなった程度です。
問題9のような問題を解くのが得意な方で、
・解説より効率よく答えを導き出せるよ
・このポイントをおさえて問題を見れば
 解きやすいよ
など考え方、見方をご教授いただける
方がいましたら是非教えていただき
たいですm(__)m

問いの写真
IMG_0601.jpeg

解説の写真

IMG_0602.jpeg
IMG_0603.jpeg
IMG_0604.jpeg

0

2Answer

私の場合、2次元の配列は次のような表をイメージします。

j=0 j=1 j=2
i=0 1 2
i=1 2 3 4

コードを見ると外側のループで縦軸を走査しているので、内側のループで横軸を走査したいのだろうと推測します。
そうすると内側のループは横の要素数だけ走査したいので、array[i].lengthが上限になると推測します。この時点で選択肢A, Cが残ります。
さらに全部の値(添字0から全部)を足していくと10を超えてしまうので、j = 0から開始するのは違いそうです。よって選択肢Cが残ります。

全てのパターンで表を作って検証していくとかなり時間がかかってしまうので、表をイメージしてどのように走査していくと求められる回答になるのか、というのを考えます。

2Like

すべてのパターンをまじめに検討するのは時間がかかるので、まずはありえない選択肢を除外する操作をする。

A: ぱっと見ですべての要素を足し合わせる操作だなと思うので、1+2+2+3+4 = 12で除外
B: 範囲外であるj=2になることがわかるので、除外(解説でExceptionがでるよという説明と同義)
C: 表示がどうなるかわからないが10が出る可能性があるので、候補
D: Bと同じ理由で、除外

時間がなければ計算せずにCを選ぶ。
時間があれば、Cに関してのみまじめに計算する。
表をいちいち書くのはだるいので、 iは0 or 1の2パターンしかないので、それぞれ代入して、値を計算、10だなわかるので、自信満々にCを選ぶ。

1Like

Your answer might help someone💌