【基本情報技術者試験科目B】サンプル問題全20問完全解説~Vol.2(問7~問12)

Sdílet
Vložit
  • čas přidán 21. 08. 2024
  • 「基本情報技術者試験7つの超速合格術」
    科目B完全対応!合格メソッドを圧倒的なタイパとコスパでご提供します
    masuyaplus.com...
    ---------------------------------------------------------------------------------------------
    IPAのサイトにて2022年12月26日に公開された基本情報技術者試験科目Bのサンプル問題全20問を徹底解説します。専門講座やテキストにはない裏情報がある…かも。
    解説は4つの動画に分かれています。Vol.2は問7~問12を解説します。
    ---関連動画-----------------------------------------------------------------------
    【基本情報技術者試験科目B】サンプル問題全20問完全解説~Vol.4(問17~問20)
    • 【基本情報技術者試験科目B】サンプル問題全2...
    【基本情報技術者試験科目B】サンプル問題全20問完全解説~Vol.3(問13~問16)
    • 【基本情報技術者試験科目B】サンプル問題全2...
    【基本情報技術者試験科目B】サンプル問題全20問完全解説~Vol.1(問1~問6)
    • 【基本情報技術者試験科目B】サンプル問題全2...
    【改訂基本情報技術者試験】科目Bサンプル問題 超ゆるゆる解説(2022年4月25日公開全6問解説)
    • 【基本情報技術者試験】科目Bサンプル問題 超...
    【2023年4月改訂】基本情報技術者試験・情報セキュリティマネジメント試験の攻略ポイント
    • 【2023年4月改訂】基本情報技術者試験・情...
    ---------------------------------------------------------------------------------------------
    株式会社マスヤプラス 尖ったセミナーを真面目にやる会社
    masuyaplus.com/
    #基本情報技術者試験 #科目B #サンプル問題

Komentáře • 51

  • @user-gg7ud3cm7w
    @user-gg7ud3cm7w Před rokem +5

    マジで学校で聞くより圧倒的にわかりやすい笑

    • @masuyaplus
      @masuyaplus  Před rokem +1

      そう言っていただけてとても感謝です!
      恐らくそれは、他の講師やCZcamsrとは違いゆるゆるな会話口調で緊張感がないからだと思いますwwまぁそれが私のウリなのですが(^_^;)

  • @user-ru4tz4dl7p
    @user-ru4tz4dl7p Před rokem +5

    ご丁寧な解説ありがとうございます。
    ご質問があります。
    16:50
    Q9の8を出力後、L3のorder(8)に戻り、その後L4でn=4が出力される理由がよく分かりません。
    マトリックス表見ても、8はゼロですし8の親は4だからと言われれば何となく分かるのですが、プログラム上だけで見るとどのようにorder(8)だとn=4がくると判断されたのでしょうか。

    • @masuyaplus
      @masuyaplus  Před rokem +3

      n=4のときのプログラムを表すと
      order(4)
      if(tree[4]の要素数が2と等しい)
       order(tree[4][1])
       4を出力
       order(tree[4][2])
      tree[4][1]はマトリクスで見ると4行1列目なので8となり、order(tree[4][1])=order(8)です。order(8)の場合、tree[8]の要素数は2分木の末端要素なので2でも1でもなく0のためelse内の「8を出力」が実行されます。
      order(tree[4][1])が「8を出力」となるため、上記プログラムを見るとその後は「4を出力」となります。

  • @tecumdominus5842
    @tecumdominus5842 Před rokem +7

    本日受けてきました。先生の動画のお陰で合格です。ありがとう(^.^)(-.-)(__)ございました‼️

    • @masuyaplus
      @masuyaplus  Před rokem +3

      合格おめでとうございます!いやー、こういったメッセージをいただけると、そのたびにチャンネル開設した甲斐があったと実感します。
      ちなみに、当社の有料セミナーではさらに合格率が上がるメソッドをご提供しているのですが、そこまで至らずとも実力を伴っていた、って感じですねww

  • @Hy-go6dx
    @Hy-go6dx Před měsícem

    ご解説誠にありがとうございます! 一つ疑問があります。
    ご解説の方法は、受験者が予めにある分野の予備知識持った前提上でタイトル付けしてから説明、との感じでした。
    そこで質問ですが、基本情報技術者試験科目Bの出題される問題に対しての予備知識の種類はサンプル問題20問前後くらいで限られているのでしょうか?
    予備知識もし果て無く出題されそうでしたら、勉強方法をもっと見直そうと思います。
    全部動画見たわけではないですので、もし上記の点について別の動画などで説明されていましたら申し訳ありません。

    • @masuyaplus
      @masuyaplus  Před měsícem

      詳しくは当社の基本情報技術者試験合格術で解説しておりますが、アルゴリズムとプログラミングはほぼほぼ出題される5種類の計算があり、それはサンプル問題に含まれています。
      問題は時間です。20問もあると必ずハマる問題が現れるので、それをいかにスルーできるかが合格のカギとなります

  • @ranakamu3691
    @ranakamu3691 Před rokem +2

    こんばんは。未経験の独学でFEを勉強しているのですが、解説動画にはとても助けられております。
    問10、というよりむしろ単方向リストについて質問かもしれませんが、「if (pos == 1) listHead ← listHead.next」は要するに、「先頭(一番目)の要素を削除して、先頭の次の要素(二番目の要素)を先頭の要素に代入する」というイメージだと思います。それでは、その後に続く三番目、四番目 … n番目の要素を、二番目、三番目 … (n-1)番目の要素へとずらす という処理は必要ないのでしょうか?

    • @masuyaplus
      @masuyaplus  Před rokem +1

      ご視聴ありがとうございます。
      単方向リストはイメージされた通りです。
      ずらす処理に関しては、リストを配列で管理しているわけではないので不要です。リスト間はnextという参照で管理しているので、例えば3番目の要素を削除した場合は、2番目の要素のnextが3番目から4番目に代わる処理だけで済みます。

    • @ranakamu3691
      @ranakamu3691 Před rokem

      ありがとうございます。
      1時間後に試験なので良い結果が報告できるよう頑張ります。
      ちなみに参考書は「いちばんやさしい〜」という奴ですが、先生の方が圧倒的に優しくわかりやすいです。結構優しくないし嘘を書いてる本でした。試験形式変更もあったので仕方ないと思うしかなかったですが。。。

    • @ranakamu3691
      @ranakamu3691 Před rokem +1

      先生、公式発表はまだですが、試験終了時の点数結果画面にて合格を確認いたしました🎉🎉
      周りでFEを受ける人がいましたら、必ずやこのチャンネルをオススメいたします。
      ありがとうございます。科目bの解説が参考書に一切無かったので、この合格は先生のおかげです。
      未経験独学で1月勉強しただけで1発合格が出来たのはとても嬉しいです。

    • @masuyaplus
      @masuyaplus  Před rokem

      合格おめでとうございます!
      多少なりとも動画がお役に立てたようで何よりですが、合格の根本的な要因はra Nakamu様の実力によるところだと思います。なにより、1か月で合格できるのはとてもスゴイことです👍

  • @user-mp9us9wk1y
    @user-mp9us9wk1y Před rokem +4

    問9ですが、4回目の2が出力される理由がわかりません。
    処理は3回目で終わるのではと思ってしまいます。

    • @masuyaplus
      @masuyaplus  Před rokem +1

      再帰構造のプログラムは面倒くさいですよねー。
      8 4 9が出力されるのはorder[4]のときですが、order[4]ということはorder(tree[2][1])です。n=2のときにif文の中でorder(tree[2][1])が呼び出され8 4 9が出力されますがそこで終わらず、次の行「nを出力」が実行されるため、2が出力されることになります。
      なお次の行は「order(tree[2][2])」で10 5 11が出力されます。

  • @user-ob7pm4of9e
    @user-ob7pm4of9e Před rokem +3

    問9について本当に初歩的な質問で申し訳ないのですが、
    15:15 で order(tree{1}{1})について、先生が「この{1}{1}はそれぞれマトリクスの行と列に対応していて行が1、列が1のところを見ると2になってますので...」と仰っていますが、{1}{1}のカッコの中の数字がマトリクスの行と列に対応しているというのはどこでわかるのでしょうか。
    私は解いてる途中にorder{1}{1}を見た時点で、この文が何を表しているのかさっぱりわからなくなりました...。

    • @masuyaplus
      @masuyaplus  Před rokem +1

      マトリクスは、問題文中プログラムの最初にあるtreeの配列{{2,3},{4,5}…}に対応しています。おっしゃっている[1][1]は1行1列目で2。ちなみに、1行2列目([1][2])は3、2行1列目([2][1])は4、2行2列目([2][2])は5…てな具合です。
      このような2次元配列の場合、行が{}単位で列が{}の中の数字単位です。つまり、1行目が{2,3}、2行目が{4,5}、1列目が2と4、2列目が3と5になります。
      この問題は2次元配列に加え自身を呼び出す再帰構造にもなっているので、一度ハマるとドツボる可能性は高いですね😵

    • @user-ld7ww6ow3o
      @user-ld7ww6ow3o Před rokem

      マトリックス図を書いて「○行目の○列目はこれ」って分かるのが問題の意図的に当たり前なんですかね?

  • @kahluamilk4525
    @kahluamilk4525 Před 10 měsíci +1

    問9について他の方の動画や解説では全く分からなかったのですが先生の解説でばっちりわかりました!ありがとうございます!ただ細かいところで申し訳ないですが二分木の読みは調べてみると「にぶんもく」ではなく「にぶんぎ」らしいです... おせっかいでしたらすみません。

    • @masuyaplus
      @masuyaplus  Před 10 měsíci +1

      動画がお役に立てたようでなによりです😊
      数十年「にぶんもく」で誰にも指摘されなかったのでそれが正しいと思っていましたが「にぶんぎ」だったんですね!おせっかいどころか、長年の誤りを指摘いただきありがとうございます。

  • @user-wi5ec5lz7f
    @user-wi5ec5lz7f Před rokem +1

    問10についてですが、答えはカとなっておりますが、ウも同様ではないかと思うのですが違うのでしょうか、、?
    解答でprevベースで処理が進んでいくとありますが、elseの下のprev←listHeadでもlistHeadはそのまま生き続けていてprevと同じ所を参照しているのではないかと思ってしまいましたm(__)m

    • @masuyaplus
      @masuyaplus  Před rokem

      確かに、i=2のときはウも同様ですね。
      ただ、listHeadはあくまでリストの先頭に固定されているメンバ変数なので、i=3,4,5…と増加した場合はそれに伴い次の要素に移動するprevでないと対応できません。
      ちなみに、prev←listHeadは単にprevを初期化しているだけなので、listHead自体には何の変化もないですね。

    • @Anne_re_d
      @Anne_re_d Před 10 měsíci

      これに関して質問です。
      上記の処理で任意の位置の要素を削除出来るのは分かりましたが、仮にリストの要素数が4つで3番目の要素を削除した場合、prevが参照するのは2番目の要素になってしまう気がします。
      そうなるとprev→2番目の要素→4番目の要素となって、1番目の要素まで消える気がするのですが違うのでしょうか?

  • @keishirokamata
    @keishirokamata Před 5 měsíci

    解説ありがとうございます。問10についてなのですが、forの繰り返し処理が理解できないので解説頂けたら有り難いです🙇‍♂️🙇‍♂️

    • @masuyaplus
      @masuyaplus  Před 5 měsíci

      iはループを回すためだけに使われる変数です。
      中身の『prev←prev.next』はリストの次へ次へと移動させる処理で、削除対象の位置(pos)の1つ手前であるpos-1まで移動させます。
      最終的には、pos-1の次(pos)の次の要素を次の要素に上書きすることで結果的にposの位置の要素を削除しています。

  • @harukid7426
    @harukid7426 Před 6 měsíci

    分かりやすいご解説ありがとうございます。
    そもそもオブジェクト指向型のプログラミング問題の内容が理解できないのですが、listelement型とはどういう意味でしょうか?整数型や文字型、文字列型は言葉通りなのでわかりやすいのですが...
    またlistelementとprevやlistheadを:で繋げているのはどういう意味でしょうか?
    クラスlistelementのなかにprevの説明がないので混乱してしまいました。

    • @masuyaplus
      @masuyaplus  Před 6 měsíci

      問題の冒頭で「クラスListelementは…」と言っているのでListelement型とは、この問題に限ったのクラスの型です。クラスとはフォルダみたいなもので、表にあるようにメンバ変数と呼ばれるいくつかの変数が格納されます。
      そこで2つ目の質問に繋がるのですが、Listelement型の変数も「整数型:i」のように実際に変数名を定義しなければなりません。ご質問の「Llistelement: prev」・「Listelement: Listhead」というのは、「整数型:i」と同じように実際にプログラムで使用するListelement型の変数を定義している処理となります。

    • @Hy-go6dx
      @Hy-go6dx Před měsícem

      オブジェクト指向型のプログラミング問題の内容が理解できないと仰ったのですが、
      科目Aの部分もオブジェクト指向型に関する質問が出てくるのです、ある程度理解しておいた方がいいです。
      個人的に同じ受験勉強している意見として、
      科目Bを先にある程度みて勉強でもいいですが、
      科目Aの知識は結構科目Bにも応用してくるので、科目Aを先に勉強したほうがいいと思います。

    • @harukid7426
      @harukid7426 Před měsícem +1

      @@Hy-go6dx
      アドバイスありがとうございます!
      難しかったんですが、5月に基本情報技術者試験合格できました!
      ちなみにいまは応用情報技術者試験の勉強していますがめちゃくちゃ苦戦してます💦

  • @misa2393
    @misa2393 Před rokem +1

    問9なのですが、orderが再帰と気づけなくて、1回目の処理でnの出力で1を出力すると考えてしまいました。再帰というのはどこからわかるのでしょうか?

    • @masuyaplus
      @masuyaplus  Před rokem

      関数(この場合order)の中に同じ名前の関数が登場したら確実に再帰構造となります。
      再帰構造を解析するコツのひとつとして、まず最初にとにかく最終到達点を確定することです。この場合は、1→2→4→8で8になりますね。

  • @ToshI-hn7vn
    @ToshI-hn7vn Před rokem +2

    prevにはlistHeadしか入ってないと思うのですが、prev.next.nextは空じゃないのですか?そもそもprev=listHeadをしたら要素の1番目が消えてしまうと思うのですが。

    • @masuyaplus
      @masuyaplus  Před rokem +1

      おっしゃる通りprev←ListHeadの時点ではprevにはListHeadしか入っていません。prevはあくまでwork(作業用)の変数、言い換えると参照のコピーのようなものなので、prev←ListHeadの処理で要素の1番目が消えることはありません。
      一方、nextは次の要素の参照となっているので、prevはコピーでもprev.nextは実際のリストの参照となります。分かりやすく言うと、最初のprevはListHeadと同じなので、コピー(prev)であろうと本物(ListHead)であろうと、次の要素の参照はListHead.nextになるということです。つまりprev.next.nextはprevが参照する要素の次の次の実際のリストの参照を指すことになります。

    • @ToshI-hn7vn
      @ToshI-hn7vn Před rokem +1

      @@masuyaplus ListHeadはあくまでリストの先頭を意味していて、prev=ListHeadをするとリスト1番目の要素をprevに格納して、空いたリストの先頭を詰めていくのだと考えていたのですが。

    • @masuyaplus
      @masuyaplus  Před rokem

      prev=ListHeadは恐らくprev←ListHeadのことだと思われますが、前述したようにListHeadの参照をprevにコピーするイメージのwork処理なので、リスト自体には何の影響も与えません

    • @mochhy6803
      @mochhy6803 Před 6 měsíci

      私もこの辺分からなくて、ListHead.next.nextを選んで間違えました。解説を聞いて、そういうものなのかと思いましたが、難しいです。。

  • @Kyo-us9bi
    @Kyo-us9bi Před rokem

    毎動画丁寧な解説ありがとうございます
    質問です
    処理の中で配列の要素番号を表している場合と配列の中身の値を表している場合の見分けがつきません。どうすれば見分けられるようになりますか?
    例として問10の
    bins[ date[ i ] ]←date [ i ] の部分とかです
    回答お願いします

    • @masuyaplus
      @masuyaplus  Před rokem

      要素番号となるのは [ ] で囲まれた中身の数字だけ、それ以外は値と単純に考えた方が良いと思います。
      bins[date[ i ]]←date[ i ]の場合二重構造になっているので分かりにくいですが、
       ・i ⇒ 要素番号
       ・date[ i ] ⇒ 左辺:要素番号、右辺:値
       ・bins[date[ i ]] ⇒ 値
      となります。ネックとなるのはdate[ i ]ですが、xなどの単純な変数に置き換えれば bins[ x ]←x となり「x番目の要素にxを入れる」となるのが分かると思います。

  • @kemi8333
    @kemi8333 Před rokem +1

    こんばんは。
    先日受験してきましたが、科目B合格得点でした。科目Aは油断してギリギリでしたが…
    先生の動画で苦手意識が無くなり知識の整理ができました。これが一番大きかったです。違うチャンネルでいくつか解説動画はありますが、それらは淡々と解説される事でただ圧倒される感が強かったです。それで知識の定着効率が悪かった気がしました。しかし先生の動画は「なんだべ?」セリフなどこちらと一体感を持って解く感じが、基本情報との垣根を取り払ってくれました。
    この問題の何が厄介なのか、近道なのか、非常に参考になりました。
    (応用情報もアップして頂けると…)
    ありがとうございました。

    • @masuyaplus
      @masuyaplus  Před rokem

      合格確定おめでとうございます!
      本動画が多少なりともお役に立てたようでなによりです。私も勉強がてら他の方の動画を拝見することがありますが、高速で理路整然と話されているのを見ると、おっしゃる通り圧倒されることしばしばです(^_^;) なので、私のゆるゆるな感じが逆に無意識に差別化となっているようですねww
      応用情報も本業の合間を縫って作成できれば思っております。
      今後とも当チャンネルをよろしくお願いいたします。

  • @user-vw2xs8ic9q
    @user-vw2xs8ic9q Před 10 měsíci +1

    科目bはサンプル問題さえ解ければ合格点とれるのでしょうか?

    • @masuyaplus
      @masuyaplus  Před 10 měsíci

      平均5分以内で解ければ合格率は高いと思います。科目Bの問題は時間制限さえなければたいてい解けるので、この5分というのが大事です。

  • @user-xj3dy8ef5f
    @user-xj3dy8ef5f Před rokem

    問10で分からないです、、
    1.List Head.nextは単一方向リストイメージのインスタンスになるのでしょうか?
    2.削除のイメージは理解しましたが、
    prev←ListHeadはイメージ図でいうとどうなるのでしょうか?

    • @masuyaplus
      @masuyaplus  Před rokem +1

      1.オブジェクト指向は概念的要素が多くイメージしにくいですが、List Head.nextはList Headの次の場所を示すデータ、つまりインスタンスの参照となります。
      2.イメージ図…は割愛させていただきますが、prev←ListHeadは未定義のprevにListHeadで初期化する処理です。
      余談ですが、この問題、valというメンバ変数を定義しておきながらプログラムでは一切しない微妙な問題かと思います。

    • @Hy-go6dx
      @Hy-go6dx Před měsícem

      @@masuyaplus 問10について質問なので、このスレッドで利用させていただきます。
      問題自体の作りがおかしいじゃない?(もしくは自分の認識が違う)という質問になりますが、下記が質問:
      関数内のListElement型のprevにListElementを格納した時点で、
      関数内prevやprev.nextにどう変えようと、大域のlistHeadの中身は変わらないはずなんじゃないかという質問です。
      まだ浅いですが、今まで開発で型についてを触ってきた経験でかなり異様に感じました。
      それとも、基本情報技術者のプログラムになんか自分の知識と違うルールが入っているのでしょうか?

  • @pumpkins1161
    @pumpkins1161 Před rokem

    正直科目B簡単だと思うんですけど、
    以前よりだいぶ簡単ですよね?

    • @masuyaplus
      @masuyaplus  Před rokem +3

      おっしゃる通り、旧午後試験に比べると1問1問の難易度はかなり低くなっていると思います。
      ポイントは問題数です。20問もあると必ずハマる問題が出てきます。それを瞬時に見極めてスルーして確実に解ける問題を落とさないことが重要になります。

  • @user-st9ih3sd8v
    @user-st9ih3sd8v Před rokem

    なんでcnt プラス1をが出てくるんですか?

    • @masuyaplus
      @masuyaplus  Před rokem +1

      求めていらっしゃる回答内容が2パターンあると思われるので2個解答いたします。
      ・「cnt←cnt+1」という表記は値を増加(インクリメント)させる定番処理で、矢印の右側を先に処理し、それをcntに上書きするという意味です。例えば、cntが3なら、3+1した値をcntに上書きするのでcntは4になります。
      ・問12のプログラムの中にある「cnt」はcountの略でいわゆる数を計測するカウンターです。この場合は、文字列s1とs2の中で文字とその位置が同じである個数をカウントしています。表の戻り値0.4の例だと、ifに当てはまるのは1番目のaと2番目のpなのでcnt=2となります。