【最短最速】科目B公式問題|基本情報技術者試験(2023年新方式対応)

視聴回数 150,778
0
0
⭐️基本情報技術者試験科目B:公式サンプル問題(アルゴリズム・セキュリティ)解説

動画内に誤りがありましたのでこちらで訂正させて頂きます。
 ■対象:動画内 00:47:09 問13.条件分岐(if文)
  ・誤:解法について、解答群の各選択肢について、具体例を用いて
     無限ループするケースを探し、無限ループするものが答え。
  ・正:解法について、解答群の各選択肢について、具体例を用いて
     無限ループしないケースを探し、無限ループしないケースが
     *見つけられないもの*が答え。

  この問題の解答の「(ウ)要素数が2で、target が dataの末尾要素の値と等しい」は
  無限ループとなる十分条件ではあるが必要十分条件ではありません。
  例えば「(エ)要素に -1 が含まれている」ケースについては無限ループしないケース、
  無限ループするケースの両方があります。
  そのため、上記で修正させて頂いている通り各選択肢について無限ループしない
  ケースを探す必要があります。

━━━━━━━━━━━━━━━━
問9で「表内の処理①〜③は何を指しているのか」という質問を
何回か頂きましたので、下記に記載しています。

処理①〜③は以下の通りとして表に値をトレースしています。

if (tree[n]の要素数 が 2 と等しい)
 order(tree[n][1])  _・・・処理①_
 n を出力     _・・・処理②_
 order(tree[n][2])  _・・・処理③_
elseif (tree[n]の要素数 が 1 と等しい)
 order(tree[n][1])  _・・・処理①_
 n を出力     _・・・処理②_
else
 n を出力     _・・・処理②_
endif

━━━━━━━━━━━━━━━━
問16で「なぜ64で割った余りが後ろの64パターン(6ビット分)になるのか」という質問を
何回か頂きましたので、下記に理由を補足しています。

なぜ64で割った余りが後ろの64パターン(6ビット分)になるのか、
まず、2進数で話をする前に、10進数の場合で考えてみましょう。
例として、以下の「xxxxxx」の部分に
10進数「333,222,222,111,111」を右詰めで格納する時の処理を考えます。
 対象:33xxxxxx 22xxxxxx 11xxxxxx

まず結果だけ見ると、
33000333 22222222 11111111 になりますよね。

これをプログラムで表現するために
計算上どうやっているかを考えます。以下の通りです。

①11xxxxxx の部分を穴埋め
 「333,222,222,111,111」の"右側6桁を取得"
  この右側6桁を取得するという計算を具体的な計算式で書くと
 「333,222,222,111,111」を1,000,000 で割った余り になります
  ※333,222,222,111,111 ÷ 1,000,000 = 333,222,222、余り111,111

  なぜこのようになるかというと、1,000,000で割るというのは、
  小数点を6桁右にずらすと同義で、小数点以下にずれた6桁が余りになるからです

  また、1,000,000 で割った商、「333,222,222」
  つまり小数点を6桁右にずらした結果の小数点より左側の値を
  次の②で使用します

②22xxxxxx の部分を穴埋め
 「333,222,222」の"右側6桁を取得"
  つまり「333,222,222」を1,000,000 で割った余り を取得

  また、1,000,000 で割った商、「333」
  つまり小数点を6桁右にずらした結果の小数点より左側の値を次の③で使用します

③33xxxxxx の部分を穴埋め
 「333」の"右側6桁を取得"
  つまり「333」を1,000,000 で割った余り を取得

問16の内容を全ての値が10進数として扱うと
上記のような計算を行うことで結果を得ることができます

ここでポイントなのは、10進数でいう6桁分の値を抽出するには、
 1,000,000で割る = 小数点を6桁右にずらす
 (10の6乗で割る)
という処理が必要だということです

問16の内容に戻って、2進数で考えるとき
「小数点を6桁右にずらす」には何をすればよいでしょうか。
これが2進数だと「64で割る」という計算になります。
もっとポイントを押さえた形で書くと、「2の6乗で割る」ということになります。

2進数と10進数の違いは1桁あたりで表現できる数字の数になります。
 ・2進数の1桁で表現できる数字の数は0と1の2パターン、
 ・10進数の場合は0,1,2,3,4,5,6,7,8,9の10パターン、
その為「小数点をn桁右側にずらす」ためには、
それぞれ上記のパターン数のn乗で割った余りを求める必要があります。
 ・2進数の場合:2のn乗で割る
 ・10進数の場合:10のn乗で割る

━━━━━━━━━━━━━━━━

2023年4月からの新形式試験対応の科目B演習問題20問を解説しています!
基本情報技術者試験(FE試験)の勉強を始めたけど、難しい・・・
科目Bのアルゴリズムとセキュリティの実力をつけたい・・・
参考書の解説は大事な所が端折られていてわかりづらい・・・

そんな悩みを抱える方、是非この動画で勉強してみてください。
科目B(旧午後問題)、確実に実力が上がる問題演習動画です。
詳しい解説は動画内にてご説明しています。ぜひご覧ください。
問1〜問16がアルゴリズム、問17〜問20がセキュリティの問題になります。

━━━━━━━━━━━━━━━━

IT学校さいとうの公式LINE

登録するだけでプレゼントが受け取れる‼
今回のプレゼント内容
✅科目B20問の完全解説(今回動画で使用したもの)
 資料名:①【最短最速】科目B公式問題20問 問1〜問9
     ②【最短最速】科目B公式問題20問 問10〜問20

⏬無料登録はこちら⏬
https://lin.ee/JY6s3WA

⚠️注意点
 PCでLINEをご覧の方は携帯からご覧いただくか、
 LINE登録後に教材が欲しい旨メッセージを送って下さい。
 LINEの仕様上携帯アプリからしか教材ダウンロードサイトが表示されません。
 メッセージを頂ければ教材ダウンロードサイトURLをご案内します。

━━━━━━━━━━━━━━━━

本動画の内容が難しすぎると感じた方はまずはコチラで
学習してみてください!簡単な問題で詳しく解法を解説しています!
 ・【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する
  https://youtu.be/waAwVXa9y2o
 ・【2023年版】基本情報技術者試験完全攻略(科目B解説編)
  https://youtu.be/oDtA78nwQMM

━━━━━━━━━━━━━━━━

00:00:00 科目B公式問題|基本情報技術者試験(2023年新方式対応)
00:01:03 問1.変数
00:03:06 問2.条件分岐(if文)
00:07:30 問3.繰り返し(for文)
00:10:11 問4.繰り返し(while文)
00:16:59 問5.関数呼出
00:19:24 問6.ビット値の操作
00:25:36 問7.関数の再帰呼出
00:30:17 問8.優先度付きキュー
00:32:59 問9.二分木
00:37:21 問10.配列操作
00:41:33 問11.配列操作
00:44:23 問12.条件分岐(if文)
00:47:09 問13.条件分岐(if文)
00:49:31 問14.配列操作
00:51:42 問15.確率
00:54:39 問16.文字コード
00:59:03 問17.セキュリティ①
01:05:27 問18.セキュリティ②
01:11:10 問19.セキュリティ③
01:15:03 問20.セキュリティ④
01:20:12 まとめ&プレゼント

※出典:基本情報技術者試験(科目B試験) サンプル問題セット
 https://www.jitec.ipa.go.jp/1_00topic/topic_20221226.html

━━━━━━━━━━━━━━━━

#LINE登録で教材プレゼント
#基本情報技術者試験 #FE #基本情報
#アルゴリズム #セキュリティ