KZ
bin
Негізгі бет
Қазірдің өзінде танымал
Тікелей эфир
Ұнаған бейнелер
Қайтадан қараңыз
Жазылымдар
Кіру
Тіркелу
Ең жақсы KZbin
Фильм және анимация
Автокөліктер мен көлік құралдары
Музыка
Үй жануарлары мен аңдар
Спорт
Ойындар
Комедия
Ойын-сауық
Тәжірибелік нұсқаулар және стиль
Ғылым және технология
【最速】科目B公式過去問を徹底解説(基本情報技術者試験)
27:36
【科目B】アルゴリズム問題をたった1動画で対策_基本情報技術者試験
3:42:20
Support each other🤝
00:31
When you have a very capricious child 😂😘👍
00:16
Мясо вегана? 🧐 @Whatthefshow
01:01
⚡Токаев ШОКИРОВАЛ Кремль! РАЗМАЗАЛ заявлением Путина #shorts
00:33
【最短最速】科目B公式問題|基本情報技術者試験(2023年新方式対応)
Рет қаралды 189,175
Facebook
Twitter
Жүктеу
1
Жазылу 10 М.
実践の鬼:IT学校さいとうさん
Күн бұрын
Пікірлер: 489
@itgakko
6 ай бұрын
⚠学習前にご確認ください! ・誤りがあった場合に概要欄で訂正している場合があります。動画におかしな点があった場合、まずは概要欄のご確認をお願いします。 ・動画で投影している教材は、本動画の概要欄からさいとうの公式LINEに登録頂くと無料でダウンロードできます! ※概要欄で訂正している内容が反映されたものをダウンロードできます。
@user-xw8kk4fq2b
11 ай бұрын
Thanks機能を解除していただきありがとうございます。お陰様で無事に合格しました。Thanksさせていただきます🎉
@itgakko
11 ай бұрын
改めて合格おめでとうございます! Super Thanksありがとうございます! ありがたくいただきます!
@KM-wd3kz
7 ай бұрын
ついに、科目Bが600点越えました! 連続不合格の中、本動画にたどりつきました。 プログラミング未経験でしたが、繰り返し関連動画を参照することで理解が深まりました。 また、質問にも丁寧に回答頂き感謝しかありません 。有名どころの参考書を繰り返すより動画を何度もみることが合格につながったと思います。ありがとうございました。今後の配信も楽しみにしております。
@itgakko
7 ай бұрын
科目B合格点到達おめでとうございます!! 未経験からの合格点到達素晴らしいですね! またThanksありがとうございます! より良いチャンネル運営に使用させていただきます!
@user-mamemame369
Жыл бұрын
今日無事受かりました!ほぼこの動画のおかげといっても過言では無いです!本当にありがとうございました!これから応用情報に向けて頑張ります。
@itgakko
Жыл бұрын
合格おめでとうございます! 次は応用情報ですか、頑張ってください!
@user-stfre
Жыл бұрын
サンプルよりも本番の問題が難しく、手応えなかったのですが845点も取れました。多少時間かかっても実行結果を書いて解いた結果だと思っています。本当にありがとうございました。
@itgakko
Жыл бұрын
合格おめでとうございます! 素晴らしいですね!
@user-oronaminc
9 ай бұрын
すごい! 大学の補習授業と並行しているのですが、口頭の説明だけだと分からないこともあり、図やマーカーのおかげでイメージがつきやすく、すごくわかりやすいです! この動画を無料で提供して下さり、ありがとうございます🙇♂️
@itgakko
8 ай бұрын
コメントありがとうございます! 勉強頑張ってください!
@かまぼこ-j5j
Жыл бұрын
先日科目B受けて無事合格点超えました! 受験直前まで全く対策出来てませんでしたが、この動画の解説のおかげでアルゴリズムの理解が深まり、本番も確信を持って答えを選べました。ありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます! 自信を持って答えられたのも素晴らしいですね!
@ねこおじさん-h6r
10 ай бұрын
34:56 急に説明飛んで分からなかったけど、tree[1][1]は「treeの1番目の要素の1つ目」ってことなのね・・・。だからorder(2)となるわけか、これは飛ばされたら泣きそう・・・!
@itgakko
10 ай бұрын
ご意見ありがとうございます! 泣かせてすみません。 本問題のような2次元配列は以下で詳しく解説していますので、 よろしければこちらもご覧ください。 【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する kzbin.info/www/bejne/rZKkqImOlp6saNE(問6.配列(応用))
@ねこおじさん-h6r
10 ай бұрын
@@itgakko あざっす!
@itgakko
10 ай бұрын
勉強頑張って下さい!
@ancho-vi562
4 ай бұрын
さいとうさんの動画はとても分かりやすので是非2024年の公開問題の解説動画も上げて頂きたいです!!待ってます!!
@itgakko
4 ай бұрын
リクエストありがとうございます!
@Seri87
Жыл бұрын
本日無事合格することができました。こちらの動画に本当に助けられました、20回くらい見たと思います笑 主さんのように人に説明するつもりで解いて練習すると頭の整理ができておすすめです。今勉強している皆様が無事合格できますように。
@itgakko
Жыл бұрын
合格おめでとうございます! わざわざご報告いただき嬉しいです! 記載いただいている通り人に説明するレベルまでいければ完璧ですね!
@もらたで工藤
Жыл бұрын
2.2.20回!?
@ya7470
Жыл бұрын
いつもお世話になっております。 情報系出身ではない私は御チャンネルの動画を見て、アルゴリズムへの苦手意識を解消させ、理解も深めました。おかげで本日基本情報技術者試験に合格しました。 心から感謝しております。
@itgakko
Жыл бұрын
合格おめでとうございます! 嬉しい報告ありがとうございます!
@Pyonsu131
Жыл бұрын
この動画と、公式LINEに載せてる最新版の解説しか科目Bの対策はやってませんが無事8割弱とれて合格することが出来ました。 本当にありがとうございます。
@itgakko
Жыл бұрын
合格おめでとうございます!!
@mochi-moti
Жыл бұрын
ほぼ一夜漬けでの受験でしたが、この動画だけで午後試験十分な点を取ることができました。問題ごとの手の付け方から詳しい解説まで参考になりました。ありがとうございます。
@itgakko
Жыл бұрын
合格点おめでとうございます! 嬉しいコメントもありがとうございます!
@まる-u3c8m
10 ай бұрын
こちらの動画のおかげであやふやだった問題ごとのアプローチがうまくできそうです! ありがとうございます!
@itgakko
10 ай бұрын
コメントありがとうございます! 勉強頑張って下さい!
@taikodaisukikurabu
Жыл бұрын
サンプル問題は初見で20問中17問正解できました。 科目Bは「出るとこだけ!」シリーズの参考書を勉強していたので、その成果を発揮できたと思っています。 間違えた問題は、この動画の解説を見て理解することができました! 解説が分かりやすくて助かりました。 来週が試験本番なので、合格の報告ができるように頑張ります!(過去問やサンプル問題含めて、科目A、Bともに及第点はありますが、試験本番は何があるか分からないので、気を引き締めて臨みたいと思います)
@itgakko
Жыл бұрын
いいですね! 来週の試験頑張って下さい!
@エノキ-e3u
Жыл бұрын
一夜漬けでFE試験に臨みましたが、科目Bはこの動画だけでなんとかなりました!ありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます!!
@yfyouho8120
7 ай бұрын
お陰様で前日670点を取りました。 ありがとうございます!! ✳︎外国人のため、日本語文章を読んだ時、スピードは遅いから、内容は長い問題を二つスキップしました。。
@itgakko
7 ай бұрын
670点素晴らしいですね! おめでとうございます!
@exe8514
Жыл бұрын
合格の助けになりました。 ありがとうございます。
@itgakko
Жыл бұрын
合格おめでとうございます!!
@カツラ侍-v7z
Жыл бұрын
この動画の解説を聞いて理解を深めたことで、合格点を取ることができました! 動画を作成していただき、本当にありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます!
@松谷之雄
19 күн бұрын
本日、基本情報技術者試験、合格しました❗️ 初学から、3週間で合格できました! 分かりやすい動画、ありがとうございます❗️
@itgakko
7 күн бұрын
合格おめでとうございます!!
@te6817
Жыл бұрын
受かりました! B試験全く手付かずで焦っていたところこの動画を見つけ救われました… 感謝です。
@itgakko
Жыл бұрын
合格おめでとうございます! 嬉しい報告ありがとうございます!
@qwe60215
11 ай бұрын
ビデオのおかけで1週間対策で科目Bは700点を取れました!ありがとうございました!
@itgakko
11 ай бұрын
合格おめでとうございます!!
@gs-qb3ox
11 ай бұрын
お世話になります。 こちらの動画で、無事合格することができました。 5年前に午後試験で落ちて、苦手意識が強かったですが、動画の通り一つ一つ手を動かし回答できました。 感謝の気持ちです。ありがとうございました。
@itgakko
11 ай бұрын
合格おめでとうございます! 苦手を克服して素晴らしいですね!
@ln706fuyuuuu
Жыл бұрын
試験が今月に迫っていますが、とても参考にさせてもらっています。一緒に解いていくうちに自信もつきます!本当にありがとうございます!
@itgakko
Жыл бұрын
コメントありがとうございます! 試験頑張って下さい!
@夢は世界征服
Жыл бұрын
試験日が近づいてきました。毎日この動画を見ます。
@itgakko
Жыл бұрын
試験頑張ってください!
@レプリケーター-k5z
Жыл бұрын
先生!サンプル問題を人に解説出来るレベルまで仕上げることが出来たのに落ちてしまいました。🥲 やはり試験なので回によっての難易度ってあるものですかね。。。 勉強したことのない分野からの出題が多くとても難しかったです。
@itgakko
Жыл бұрын
質問ありがとうございます! 試験ごとに出題される問題はランダムなので、感じる難易度にある程度のばらつきはあります。 サンプル問題は完璧だと感じるのであれば、その他いろいろな問題を解いてもっと実力をつけると良いですね!
@みかづき-d5h
Жыл бұрын
基本情報合格しました!! この動画のおかげで理解深めることでき、本番で活かすことができました。本当にありがとうございます。
@itgakko
Жыл бұрын
合格おめでとうございます! 嬉しい報告ありがとうございます!
@たまごプリンくん
Жыл бұрын
本日基本情報を受けて合格できました! 動画とても参考になりました! ありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます!!
@yu-ki1948
Жыл бұрын
先日、基本情報技術者試験受けて合格しました!理解の難しかった科目Bですが動画の解説のおかげです。ありがとうございました!
@itgakko
Жыл бұрын
合格おめでとうございます!!
@user-tu1bm4dv6v
10 ай бұрын
何度かチャレンジして、やっと合格できました! この動画のおかげです。ありがとうございます! 今後も勉強は続けていきます!
@itgakko
10 ай бұрын
合格おめでとうございます!!
@ヒロ-n5g2u
Жыл бұрын
基本情報処理技術者を合格しました!解説が分かりやすくとても助かりました。本当にありがとうございました!
@itgakko
Жыл бұрын
合格おめでとうございます! わざわざ報告頂いて嬉しいです!
@ur1ca4444
9 ай бұрын
今日試験を受けてきました! 受けながら絶対落ちたと諦めてたんですギリギリで無事に合格できました😢 問1すら分からなかった私が合格できたのは間違いなくさいとうさんのおかげです😭貴重な動画本当にありがとうございました!
@itgakko
9 ай бұрын
合格おめでとうございます!
@ybuta5nandemo
Жыл бұрын
お陰様で合格できました✨ ありがとうございました😊
@itgakko
Жыл бұрын
合格おめでとうございます! 嬉しい報告ありがとうございます!
9 ай бұрын
解説が流れる様に早くて、理解しながら付いて行くのは大変でした、、
@itgakko
9 ай бұрын
コメントありがとうございます!
@user-xw8kk4fq2b
Жыл бұрын
お陰様で無事に合格しました。ありがとうございます🙏 Thanksでお礼を申し上げたいと思います。 さいとう先生のThanks機能制限がされているようですが、thanksできないです😢
@itgakko
Жыл бұрын
合格おめでとうございます!! Thanks機能というものがあるのですね、知りませんでした! 機能はオンにしてみましたが、わざわざもう一度Thanksはしなくても大丈夫です! 合格のご報告頂けたのが嬉しいです。
@user-xw8kk4fq2b
11 ай бұрын
@@itgakko 返事が遅れて申し訳ないです。THANKS機能制限を解除していただきありがとうございます。先程Thanksを申し上げました😌本当にありがとうございました😊
@itgakko
11 ай бұрын
別のThanksコメント確認させていただきました!ありがとうございます!
@PP-cq4zz
Жыл бұрын
解説ありがとうございます。 基本的なアルゴリズムはできるのですが、少し複雑なアルゴリズムになると苦手意識が出てしまいどうしても勉強が捗れません。 出来れば四月中に取得したいと考えておりますが、こんな私にアルゴリズム(試験B)の勉強法と応援ください。
@itgakko
Жыл бұрын
ご質問ありがとうございます。 勉強法についてですが、アルゴリズムはとにかく問題の量をこなすことが大事です。 また問題の解説を見て復習する際に、ただ単に「理解した」ではなく 「同類の問題を次に解くとしたら解ける」というレベルまで復習することが重要です。 3月下旬にIPA公式のサンプル問題の類似問題の解説動画を追加でアップ予定ですので、 受験までに間に合えばそちらもご利用ください。 基本情報技術者試験の勉強頑張ってください!
@第1空挺団-f1q
Жыл бұрын
神様ですか!? 紙での解説も欲しい・・ どこかに載ってたりしますか?
@itgakko
Жыл бұрын
ありがとうございます! 投影している資料のPDF版でよろしければ、動画概要欄から公式LINEに登録して頂くとダウンロードできます🤗
@桧山尚子
Жыл бұрын
基本情報合格しました!さいとうさんのおかげでトレースの仕方が分かり、アルゴリズムを理解していくことができました。ありがとうございました。
@itgakko
Жыл бұрын
合格おめでとうございます!!
@jm-ef7jc
Жыл бұрын
科目Bに苦手意識を持っていたのですが さいとうさんの動画で各パターンの問題の考え方、 解き方のコツを掴むことができるようになり 無事に試験合格しました☺️🎉 わかりやすい解説ありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます!!
@Unko2004
Жыл бұрын
ありがたいっす😊
@itgakko
Жыл бұрын
コメントありがとうございます!
@doike2236
Жыл бұрын
アルゴリズムで🤔←状態だったので、主さんの解説動画で理解が深まりました!新方式頑張っていきます!
@itgakko
Жыл бұрын
ありがとうございます!! アルゴリズムの勉強頑張ってください🤗
@yataka-kk4nj
10 ай бұрын
さいとうさんのおかげで合格することができました! お世話になりました!
@itgakko
10 ай бұрын
合格おめでとうございます!
@parahara9686
Жыл бұрын
ありがとうございます。
@itgakko
Жыл бұрын
コメントありがとうございます! 勉強頑張ってください!
@Satoshi_304
3 күн бұрын
本日2024年12月19日、基本情報を受けて科目Bが足りず落ちました。ほんとに難しかったけど、この動画のおかげで500点近く取れました。まだ諦めてないので、勉強頑張ります!
@itgakko
3 күн бұрын
勉強頑張ってください!!
@akira_in_the_morning
5 ай бұрын
わかりやす!
@itgakko
5 ай бұрын
コメントありがとうございます! 勉強頑張ってください!
@akira_in_the_morning
5 ай бұрын
@@itgakko 合格しました!ありがとうございます。
@itgakko
5 ай бұрын
@akira_in_the_morning 合格おめでとうございます!
@mihapi
Жыл бұрын
アルゴリズムちんぷんかんぷんだった私ですがこの動画で勉強→再度自分のみで解くの短期間勉強で無事に合格できました!860/1000なので満足の結果です! 本当に感謝しかないです😭ありがとうございます!
@itgakko
Жыл бұрын
合格おめでとうございます! 高得点ですね!わざわざ報告ありがとうございます!
@もらたで工藤
Жыл бұрын
この動画見る前は全くと言っていいほど解き方とか分からなかった感じですか?自分明日試験なんでこの動画みて勉強しようと思ってます!
@mihapi
Жыл бұрын
@@もらたで工藤 そうですね、ほぼほぼ分かってない状態でした。明日頑張ってください🫡
@もらたで工藤
Жыл бұрын
@@mihapi ありがとうございます!(´▽`)
@あああ-o8s2n
Жыл бұрын
この動画のおかげで無事合格することができました。 お世話になりました。
@itgakko
Жыл бұрын
合格おめでとうございます!!
@itgakko
Жыл бұрын
IPA公式の問題サンプルはこちらです!科目Aの問題もあるのでチャレンジしてみてくださいね🤗 www.jitec.ipa.go.jp/1_00topic/topic_20221226.html
@reshne
Жыл бұрын
あと2週間も無いくらいで科目B試験あります😭 毎回20問中5問しか正解しません💦残りわずか動画活用させていただきます!!
@itgakko
Жыл бұрын
勉強頑張って下さい!
@TheOne-jq4iv
Жыл бұрын
購入した科目B対策の教科書では、プログラムの実行結果を表に書くときに、行ごとに結果を書いていました。 この動画では、行ごとの結果を書くのではなく、for文のiの値や再帰関数の引数ごとに結果を書く方法も紹介されていて、2つ目の武器を手に入れることができたのがありがたかったです。
@itgakko
Жыл бұрын
コメントありがとうございます! 勉強頑張ってください!
@平山聡-s3v
Жыл бұрын
解説ありがとうございます。問8の二分木の問題で、処理の手順について質問があります。 if (tree[n]の要素数 が 2 と等しい) order(tree[n][1]) ・・・処理① n を出力 ・・・処理② order(tree[n][2]) ・・・処理③ とありますが、IFの条件を満たしたら処理①を行い、次に処理②に行かないでまたIFの条件を満たすか確認して処理①にいくのがわかりませんでした。
@itgakko
Жыл бұрын
質問ありがとうございます! order(1)と呼び出された場合の処理順について以下に説明しますね。 ----- ◯order(整数型: n) 1. if (tree[n]の要素数 が 2 と等しい) 2. order(tree[n][1]) 3. n を出力 4. order(tree[n][2]) 5. elseif (tree[n]の要素数 が 1 と等しい) 6. order(tree[n][1]) 7. n を出力 8. else 9. n を出力 10. endif ----- まずorder(1)と呼び出されると、 1行目でif文の条件式が実行されます。 tree[1] = {2, 3} で要素数が2なのでif文内の処理が実行されます。 次に2行目の「order(tree[n][1])」が実行されます。 これは関数orderの呼び出しです。 関数内で関数が呼び出された場合、実行中の関数(ここではorder(1)として呼び出された関数)は中断されて、 新たに呼び出した関数が実行されます。 tree[1][1] = 2 なので、order(2)が新たに実行されます。 中断したorder(1)はorder(2)の処理が終了したら再開されます。 order(2)が呼び出されるとまた先頭から実行されます。 1行目のif文の条件式が実行され、 tree[2] = {4, 5} で要素数が2なのでif文内の処理が実行されます。 このような処理順で続いていきます。 そのためおっしゃっている「IFの条件を満たしたら処理①を行い、次に処理②に行かないでまたIFの条件を満たすか確認して処理①にいく」順番で処理されます。 以上、ご不明点ございましたらご連絡いただければと思います。
@たつ-e8y
Жыл бұрын
6→❌ 実際に書いてみる 8→△ 実際に書いたらできる 9→❌ 再帰関数の動き方が分からなかった 10→❌
@たつ-e8y
Жыл бұрын
13→△ 実際に書いたらできる
@たつ-e8y
Жыл бұрын
14→△ 実際に書いたらできる 15→❌ 考え方がわからなかった 16→❌ シンプルに難しい
@たつ-e8y
Жыл бұрын
17〜20 セキュリティの知識をつける
@Lizm0414
Жыл бұрын
先生!何とか受かりました!✨ 科目A 725点、B 610点…ギリッギリでした😂 どちらも見たことない問題のオンパレードで半分以上がそんなのだったんでAからすでに心が折れそうでした😢でも受かって良かった🎶先生の対策のおかげです!ありがとうございました!!
@itgakko
Жыл бұрын
合格おめでとうございます!!
@Lizm0414
Жыл бұрын
過去問道場とかの感覚や、先生の対策やった感覚ではどっちも800点は出るだろうと思ってて『合格は当たり前として、いかに高得点で受かろうか』って調子乗ってたら難しすぎて一気に現実を突きつけられました😂 前回合格率高かったからきっとIPAが難しくしたんだー(´;ω;`) では次のIT資格の勉強に移ります! 後日、今回の試験の問題が発表されて、先生が解法動画アップしてくださったら確認しに来ます(笑)
@itgakko
Жыл бұрын
次の資格の勉強頑張って下さい! 試験の問題は毎回ランダムなこともあり、今回受験された問題が公開される可能性は薄いですね。
@Lizm0414
Жыл бұрын
@@itgakko あらー、そうなんですねー(´・ω・`)もし応用情報受けるときには、いつか先生が対策してくれるかも知れませんので、またお世話になるかも知れません😏(仮定の仮定の仮定w)
@ybuta5nandemo
Жыл бұрын
問3のoutの要素数について質問です。 "要素数"という内容から"outの配列の長さ"だと解釈したのですが、ここはどのように考えればoutの中身の3を代入するという思考に至るのでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます。 動画内8:48あたりから説明している、 i=2の場合の、tail ← out[outの要素数]、 ここでtailに代入される値が なぜ3なのかという質問だと思います。 記載頂いている通り、「outの要素数」は「out配列の長さ」となります。 i=2の繰り返し処理開始時点で、「out配列の長さ」は 1 ですので、 i=2の場合の、tail ← out[outの要素数]、という記載は、 tail ← out[1] になります。 この時点での 配列out = {3}、となっていますので、 tail に 配列out の 1番目の要素である 3 が代入されます。 不明点ありましたらご連絡いただければと思います。
@ybuta5nandemo
Жыл бұрын
@@itgakko ありがとうございます。ご説明していただいた内容で理解できました。また何かありましたら質問させていただきたいと思います
@itgakko
Жыл бұрын
よかったです!
@itgakko
Жыл бұрын
@hirohi9370 質問ありがとうございます! まず、この問題の解答は ウ ではなく カ です。 その上で頂いた 「問3のtailの要素数というのは、要素の個数ではないのでしょうか?」 という質問についてですが、 すみません、この質問の意図を読み取れませんでした。 おそらく頂いている質問はプログラム上の tail ← out[outの要素数] こちらの部分を指しておられると思います。 また、さらに記載いただいている以下の内容ですが、 in={3}→要素数1 In={3,2,1}→要素数3 プログラム上では inの要素数を使用している箇所は for文の繰り返し回数を指定している箇所だけであり、 inは上記のように格納されている値は変化しないため、 何を指されているのか読み取ることができませんでした。 お手数ですが、不明点をより詳細に教えていただければと思います。
@bzhei48_dh3
Жыл бұрын
これtail←outの要素数=1って考えちゃってるってことですね。実際はtail←out[outの要素数=1]となってout[1]で、現状out{3}だから3ってことです。
@user-tu1bm4dv6v
Жыл бұрын
ためになる動画をありがとうございます。 問3について、質問させてください。 9:04 辺りのoutの要素数が配列の末尾の値になる理由が理解できておりません。要素数=その中にある値の数(何個の値が入っているのか)ことだと理解していたのですが、要素数=配列の末尾の値というものなのでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます。以下に回答しますね。 ご質問は動画内8:57付近の「out[outの要素数]というのは配列の中の一番末尾の値をとってくるという風に言い換えられる」と言っている部分を指されていると思います。 具体例で考えるとわかりやすいです。下記、iの値ごとに tail ← out[outの要素数] が実行されるタイミングにおいて、 ・i=2の場合、out={3}、outの要素数=1、out[outの要素数]=out[1]=3 ・i=3の場合、out={3,5}、outの要素数=2、out[outの要素数]=out[2]=5 ・i=4の場合、out={3,5,6}、outの要素数=3、out[outの要素数]=out[3]=6 となっています。全てのケースでout[outの要素数]が配列outの末尾の値になっていることが見て取れると思います。 なのでご質問いただいている「outの要素数が配列の末尾の値になる」のではなく、 「out[outの要素数]が配列の末尾の値になる」ということを説明しております。 動画内での説明が混乱させてしまう形となっておりすみません。 ご不明点などありましたらご連絡ください。
@user-tu1bm4dv6v
Жыл бұрын
@@itgakko ご回答いただき、ありがとうございます。 返信遅くなり、申し訳ないです。 詳しい説明のおかげで、out[outの要素数]が配列の末尾の値になる、という意味が理解できました。 ありがとうございます! 今後もこの動画を活用させていただきます!
@a-pampered-pooch
Жыл бұрын
ずっと科目Bが不安でしたが、645点ですがギリギリで合格することができました! 本当にこの動画のおかげで、再帰を始めこれまで理解が難しかったアルゴリズムの問題がしっかりと解けました!! ありがとうございました!!!
@itgakko
Жыл бұрын
合格おめでとうございます! 報告嬉しいです!ありがとうございます!
@techlearner-wp3rv
Жыл бұрын
48:04 最初問題を解いているとき、問13(ア)でelseのreturn middleが実行されたあと、while文頭に戻って更にlow
@itgakko
Жыл бұрын
質問ありがとうございます! そうですね、return が実行されると問答無用でその関数の実行が終了します。
@しょういちとうさか
Жыл бұрын
40:53 の問10について、質問です。 ここで例として説明していただいているときに用いられている「あ、い、う、え、お」からなる単方向リストを、配列っぽく{'あ','い','う','え','お'}と表したとして、 ここでの例と同様にこの配列{'あ','い','う','え','お'}から「え」を問題文のプログラムを用いて、削除するとしたら、{'あ','い','う','お','お'}のような感じになると思ったのですが、この理解はあっていますでしょうか? また、もしこの理解があっていた場合、問題文のプログラムを実行した、入出力を配列っぽく表すと、{'あ','い','う','え','お'}→{'あ','い','う','お','お'}のようにはなるけど、単方向リストの性質的には指定された要素が削除されたことになっているのでしょうか?それとも、そもそもこのように配列っぽく考えるのではなく単に、「う」から「え」へのつながりが、「う」から「お」へのつながりに変えられて、結果的に要素「え」が削除された、といった風に考えたほうが良いのでしょうか? 長文になってしまいましたが、よろしくお願いいたします。
@itgakko
Жыл бұрын
質問ありがとうございます! 問題文のプログラムを使用して 単方向リスト {"あ","い","う","え","お"} から "え" を 削除すると、結果は {"あ","い","う","お"} になります。 おそらくイメージされている内容はあっていると思いますが、細かいところが異なるので以下で説明しますね。 混乱させてしまったかもしれませんが、単方向リストは配列の一種だと考えてください。 まず通常の配列と、今回の問題の題材である単方向リストの特徴を記載しますね。 【通常の配列】 各要素へのアクセスは配列の各要素と対応する「添え字」によって行う。 (例) {"あ","い","う","え","お"} から 4番目の要素 "え" を取得する場合、 プログラム上では 配列名[4] のように、添え字を使ってアクセスする。 【単方向リスト】 各要素へのアクセスは、各要素が持つ「次の要素へのリンク」を用いて先頭から芋蔓式に行う。 (例) {"あ","い","う","え","お"} から 4番目の要素 "え" を取得する場合、以下の順番でアクセスする。 1. 先頭の要素 "あ" を取得 2. "あ"が持つ次の要素へのリンクから "い" を取得 3. "い"が持つ次の要素へのリンクから "う" を取得 4. "う"が持つ次の要素へのリンクから "え" を取得 どちらも、複数の要素の集まり(例.{"あ","い","う","え","お"}) を表していることに変わりはありませんが、要素へアクセスする際の方法が異なります。 上記を踏まえた上で、{"あ","い","う","え","お"} から "え" を 削除した時どうなるかを説明します。 単方向リストの特徴を踏まえた上で削除前、削除後の状態を書くと以下のようになります。矢印は次の要素へのリンクを表します。 【削除前】 "あ" →→→ "い" →→→ "う" →→→ "え" →→→ "お" 【削除後】 "あ" →→→ "い" →→→ "う" "え" "お" └────────↑ この削除後の状態では、元々あった要素 "え" は単方向リストにおいて要素を取得する際の特徴(先頭からリンクを使って芋蔓式にアクセス)に当てはめると、どうやってもアクセスできない状態になりました。 こういった状態を指して「"え"が削除された」ということになります。 おそらくイメージされている内容はあっていると思いますが、そもそも単方向リストは配列(複数の要素の集まり)の一種であるので、この削除後の状態を {} で書き表すと {"あ","い","う","お"} になります。 以上、ご不明点ありましたらご連絡いただければと思います。
@しょういちとうさか
Жыл бұрын
丁寧に説明していただき、ありがとうございます。 単方向リストは配列の一種なんですね。 重ねて質問してしまって申し訳ありませんが、削除後の単方向リストを配列であらわすと{"あ","い","う","お"}となるとすると、配列の要素番号の先頭の値をを0とすると、この配列の要素「お」の要素番号は、削除前と削除後で4から3に変わったと考えてよいのでしょうか? また、仮にもともとの単方向リストが「あ、い、う、え、お、か、き、く、け、こ」であった場合にこの単方向リストから「え」を削除するときを考えた場合も同様に、 削除前、削除後の単方向リストを配列であらわすと {"あ","い","う","え","お","か","き","く","け","こ"} →{"あ","い","う","お","か","き","く","け","こ"} となり、要素「お」、「か」、「き」、「く」、「け」、「こ」の要素番号もそれぞれ1ずつ減ると考えてよいのでしょうか? よろしくお願いいたします。 @@itgakko
@itgakko
Жыл бұрын
追加で頂いた質問に回答しますね。 単方向リストではそもそも「要素番号」は存在しません。 要素番号が存在しない代わりに各要素が「次の要素へのリンク」を持っていて、これを使って各要素にアクセスします。 なので単方向リストではそもそも要素番号が増えたり減ったりするという考え方自体がありません。 各要素が持つ「次の要素へのリンク」を変更することによって要素の追加だったり削除を表現します。
@しょういちとうさか
Жыл бұрын
ありがとうございます!40:53 のおかげで、リスト構造の使い方の理解が深まった気がします。丁寧に教えていただき、ありがとうございました!@@itgakko
@itgakko
Жыл бұрын
よかったです!
@tatibanadouzann
Жыл бұрын
ほぼこの動画でしか科目Bの対策しませんでしたが、なんとか合格できました。的確で分かりやすい説明を80分の動画にまとめてください大変ありがとうございました。
@itgakko
Жыл бұрын
合格おめでとうございます!!
@kt3221
Жыл бұрын
問9ですが、order(2)の後nを出力して、order([n],[2])をしてから、order(tree[n][1])をするのではないのでしょうか?if文3行の処理をせず、処理1をする点がちょっと理解できずにいます。
@itgakko
Жыл бұрын
質問ありがとうございます。 結論としては、動画内で解説している順序が正しいです。 再帰呼び出しの場合の処理順についてですが、 下記でより詳しく解説していますので、こちらの問14を確認してみてください。 【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する kzbin.info/www/bejne/rZKkqImOlp6saNE
@kt3221
Жыл бұрын
ありがとうございます。やってみます!
@林諄-z9x
Жыл бұрын
コメント失礼します この20問の対策のみでは、本試験に対応するのにはさすがに不十分ですよね??
@itgakko
Жыл бұрын
質問ありがとうございます! 十分かどうかは人によって変わるのでなんとも言えませんが、 この20問がすらすら解けないのであれば、 その他の問題も解いて練習するのがいいと思います!
@user-xv1nr6ud2n
9 ай бұрын
問6についての質問です。 22:49〜③の(rの末尾にrbyteの末端の値を追加)はなぜ先頭に追加ではないのですか?
@itgakko
9 ай бұрын
質問ありがとうございます! ご質問されている部分は プログラム上の以下部分を説明したものです。 ----- r ← ( r
@user-xv1nr6ud2n
8 ай бұрын
返信遅くなってすいません。質問に対する回答ありがとうございます。 これを見て理解できました🙇♂️ そして今日6回目の基本情報受けてきてやっと受かりました😭齋藤さんのおかげです。本当にありがとうございました!
@itgakko
8 ай бұрын
@@user-xv1nr6ud2n よかったです!勉強頑張ってください!
@user-yp7sj8jz8f
10 ай бұрын
質問です。 58:57の右上部分の64ビット分との記載がありますが、二進数のビットの数はこのように表記するのでしょうか? 自分に知識だと64ビットのところは6ビットというふうに考えていましたがこちらが正しいのでしょうか? ご教授お願いしたいです。
@itgakko
10 ай бұрын
質問ありがとうございます! ご連絡いただいたのは「10xxxxxx」と記載している箇所の 「xxxxxx」の部分は6ビットではないか?という意味でしょうか? こちらは「xxxxxx」の部分をどう捉えるかで答えが変わります。 ・「xxxxxx」の桁数(データサイズ)は6ビット ・「xxxxxx」で表現できる値の全パターン数は64ビット 動画の中でご説明しているのは2進数6桁で表現できる 値のパターン数になります。 以上、ご不明点ありましたらご連絡いただければと思います。
@あーあー-h4t
Жыл бұрын
過去問道場にあるアルゴリズムはもっと長文なのですが、2023からは動画のような短い問題が沢山あるのでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます! 2023年4月から試験形式が新しくなり、この動画のような短めの問題が主となっています。
@あーあー-h4t
Жыл бұрын
@@itgakko ご回答ありがとうございます! 情報セキュリティも今までと比べるかなり短いようですね。 こちらの動画を使用して勉強したいと思います。
@itgakko
Жыл бұрын
@user-co8ip1ks5b 勉強頑張って下さい!
@user-bn1ew4ge7i
2 ай бұрын
本日受験してA705,B680でした。合格見込みです。 ありがとうございました!
@itgakko
Ай бұрын
合格ライン到達おめでとうございます!!
@chino_dutch5119
Жыл бұрын
すみません再度質問失礼します。 問16に関してなのですがcpというのはこの場合何を指しているのでしょうか?数値としては無いのでしょうか? またこの場合の具体的な結果の数値はどのようになりますでしょうか?初学者で不明点多くて申し訳ありません。よろしくお願いします。
@chino_dutch5119
Жыл бұрын
また本文中では2進数のビットパターンで記載されていて、プログラム上では10進数での記載がされているためプログラム上の値を2進数に変換してしてしまったのですが、この場合は10進数のまま進めていくのでしょうか? 加えてこの配列に格納されている3つの値はそれぞれ別物で考えるのか一つのものとして考えるのかどちらでしょうか? 何度も申し訳ありません。答えていただければ幸いです。よろしくお願いします。
@itgakko
Жыл бұрын
質問ありがとうございます!いかにそれぞれ回答しますね。 ・cpというのはこの場合何を指しているのでしょうか?数値としては無いのでしょうか? →変数cpはプログラム上以下2つの値を格納しています。 cpに対して割り算した結果をさらにcpに格納しているので、 何か1つのものを指してはおらず、役割が変わっていっているイメージです。 ・引数で渡された Unicode の符号位置 ・引数で渡された Unicode の符号位置について、 ビットパターン(配列utf8bytesに格納されている値)で割った商 ・この場合の具体的な結果の数値はどのようになりますでしょうか? →問題の具体例にある”あ”の符号位置 3042(16進数表記) が 本プログラムの引数に渡された場合を例に説明しますね。 以下プログラムの動きです。「//_斜体_」で具体値など補足しています。 最終的にプログラムから返される値(10進数表記)が{227, 129, 130}となります。 これを2進数表記に直すと{11100011, 10000001, 10000010}となり、 問題文に記載してある"あ"のutf-8の記号に一致します。 -------------------- 整数型の配列: utf8bytes ← {224, 128, 128} 整数型: cp ← codePoint _// cp = 12354(16進数表記3042 を 10進数表記に直した形)_ 整数型: i for (i を utf8bytes の要素数 から 1 まで 1ずつ減らす) _// i=3 から i=1 の3回繰り返す_ ・繰り返し1回目(i=3) utf8bytes[i] ← utf8bytes[i] + (cp ÷ 64 の余り) _// 12354 ÷ 64 の余り = 2 なので、_ _// utf8bytes[3] = 128 + 2 = 130 となる_ cp ← cp ÷ 64 の商 _// cp ÷ 64 の商 = 193 なので、_ _// cp = 193 となり、次の繰り返しへ_ ・繰り返し2回目(i=2) utf8bytes[i] ← utf8bytes[i] + (cp ÷ 64 の余り) _// 193 ÷ 64 の余り = 1 なので、_ _// utf8bytes[2] = 128 + 1 = 129 となる_ cp ← cp ÷ 64 の商 _// cp ÷ 64 の商 = 3 なので、_ _// cp = 3 となり、次の繰り返しへ_ ・繰り返し3回目(i=1) utf8bytes[i] ← utf8bytes[i] + (cp ÷ 64 の余り) _// 3 ÷ 64 の余り = 3 なので、_ _// utf8bytes[1] = 224 + 3 = 227 となる_ cp ← cp ÷ 64 の商 _// cp ÷ 64 の商 = 0 なので、_ _// cp = 0 となり、繰り返し終了_ endfor return utf8bytes _// utf8bytes = {227, 129, 130}_ -------------------- ・本文中では2進数のビットパターンで記載されていて、 プログラム上では10進数での記載がされているため プログラム上の値を2進数に変換してしてしまったのですが この場合は10進数のまま進めていくのでしょうか →問題を解く上では 2進数 or 16進数 どちらで考えてもOKです。 ・加えてこの配列に格納されている3つの値は それぞれ別物で考えるのか一つのものとして考えるのかどちらでしょうか? →すみません、こちらの質問の意図を読み取ることができませんでした。 具体的に考える上で困った理由、箇所などを教えていただけないでしょうか。
@nikonikofu6209
Жыл бұрын
質問です 問9の二分木で処理①、処理②、処理③がそれぞれ問題文記載のプログラムのどのコード部分を仰っているのでしょうか。 ご回答お願いします
@itgakko
Жыл бұрын
質問ありがとうございます。 問9の処理①②③について、以下の通りとなります。 ①order(tree[n][1]) ②nを出力 ③order(tree[n][2]) 上記がわかりづらくすみません。 ご不明点などあればご連絡頂ければと思います。
@谷口-x2v
9 ай бұрын
科目Bは、さいとうさんの動画を全てみて理解すれば解けるようになるのでしょうか? 他にやるべき問題、参考書などはありますか? 科目Bは過去問がないのでいけるか不安です。
@itgakko
9 ай бұрын
質問ありがとうございます! 「理解した」のハードルが人によって違うので、 基本的に「〜〜やれば解けますか?」のような質問にはお答えしておりません。 ご了承ください。 人によって前提となる知識が異なるので どの程度の量問題を解けば良いという目安はありません。 ご自身の感覚で「8割程度正解できる」という自信がつくまで学習するのが良いです。 私の動画だけで自信がつくならそれで良いですし、 足りないなら問題集でさらなる自信アップをする必要があります。 問題集であれば以下の問題集はオリジナル問題が77問掲載されていておすすめです! 基本情報技術者[科目B]アルゴリズムとプログラミング トレーニング問題集
@ワタナベヨウイチ-s1t
Жыл бұрын
今回、午前免除等でなく午前と午後のフルタイムの受験です。午前は余裕で基準をクリアできましたけど、やはり、午後が難しい。前回はあと一歩のところで、不合格。今回は話しにならない点数。皆さんが言うように、午後対策に特化した講義です。しかしながら、人により、問題との相性がピッタリはまらないと、初見のオンパレードで地獄を見ます。見たことがあると、感じられるならば、感触どうりに得点できるだろうけど、運がなかったのかな。
@itgakko
Жыл бұрын
コメントがありがとうございます! 見たことがあると感じられる問題が出てくるのは期待できません。見たことがある問題が出てきたらラッキーくらいに考えた方が良いです。
@kouheikawamoto3945
4 ай бұрын
いつもさいとうさんの動画にはとてもお世話になっております。 問16の文字コードの問題につきまして、質問があります。 処理の内容は把握できたのですが、 6桁を取得するための計算で、なぜ64で割るのかが理解できずにいます。 6桁なので32だと思っているのですが…
@itgakko
4 ай бұрын
質問ありがとうございます! なぜ6桁だと64で割るのかについて、 1桁の場合から1つずつ桁を増やして考えるとわかりやすいです。 ・1桁: 0 or 1 の2つしかないので、2パターン ・2桁:1桁の時の各パターンに対して、1番左に 0 or 1 がつくパターンが増えるので、 2 × 2 = 4パターン ・3桁:2桁の時の各パターンに対して、1番左に 0 or 1 がつくパターンが増えるので、 4 × 2 = 8パターン ・4桁:3桁の時の各パターンに対して、1番左に 0 or 1 がつくパターンが増えるので、 8 × 2 = 16パターン ・5桁:4桁の時の各パターンに対して、1番左に 0 or 1 がつくパターンが増えるので、 16 × 2 = 32パターン ・6桁:5桁の時の各パターンに対して、1番左に 0 or 1 がつくパターンが増えるので、 32 × 2 = 64パターン また、動画概要欄にも「なぜ64で割った余りが後ろの64パターン(6ビット分)になるのか」という説明を 補足として記載していますのでよろしければそちらもご確認ください。
@NK-ou8lo
9 ай бұрын
基本情報技術者 午後問題のデータ構造及びアルゴリズムという項目の過去問を勉強しているのですが、この動画で言っていることは完璧に理解できるし、1人でもできるのに、過去問は解けません。 本番の科目bはどのレベルのものが出るのでしょうか?テスト形式が変わる前のデータ構造及びアルゴリズムレベルの問題が出るのでしょうか?
@itgakko
8 ай бұрын
質問ありがとうございます! 本番の試験でも本動画で取り扱っているような問題が出ますので、 「基本情報技術者 午後問題のデータ構造及びアルゴリズム」ではなく、 可能であれば現行試験の形式の問題を解いて練習した方が良いですね。 私の他の動画でも良いですし、 やり尽くしてしまった場合は、以下の問題集がおすすめです。 77問掲載されていて結構な量を演習できます。 基本情報技術者[科目B]アルゴリズムとプログラミング トレーニング問題集
@なおやでした
Жыл бұрын
解説ありがとうございます、、心強いです。残り4日しかありませんが気合い出します。質問です。 36:01 n=8を出力した後、なぜ一つ前の4に戻るかがよく分かりません、、
@なおやでした
Жыл бұрын
8が格納されている節の親が4だからですね、、 初歩的ミスでした😅
@techlearner-wp3rv
Жыл бұрын
22:25 問6で突然、rbyte=0100 1011ってことになってますがどうやって出てきた値なんでしょうか?この値ってあくまで、引数byte=01001011のときのrevの戻り値であって、rbyteの戻り値じゃないと理解しています。 またプログラム2行目ってなんのために存在しているのでしょうか?僕が見落としていなければ、byteをrbyteに代入するという行為が行われていないように思います
@itgakko
Жыл бұрын
質問ありがとうございます! プログラム上の以下箇所で引数の byte を rbyte に設定しています。 この行が実行されたタイミングで rbyteの値が 01001011 になっています。 ----- 8ビット型: rbyte ← byte ----- もう1つ、プログラムの2行目とおっしゃられているのは 「8ビット型: rbyte ← byte」のことでしょうか? この行自体が「byteをrbyteに代入するという行為」に該当します。
@techlearner-wp3rv
Жыл бұрын
@@itgakko 返信ありがとうございます,おっしゃる通り2行目とは「8ビット型: rbyte ← byte」のことです。 問題文にあるようにbyte=01001011だとrev(01001011)=11010010と返すかどうかを検証するために、byte=01001011と仮定してトレースする。その中で2行目でbyte=01001011をrbyteに代入した…という認識で合ってますでしょうか? それはそれで、byteをrbyteにそのまま代入するだけなら、なぜbyteを直接使う(ア~エ選択肢でrbyteでなくbyteを使う)ことなく、rbyteを咬ませるのか疑問です。そしたら2行目が不要になり削除して、その分シンプルなプログラムになるのに。問題文に対するツッコミなのでさいとうさんに聞いても仕方ないかもしれませんが😅
@itgakko
Жыл бұрын
それぞれ回答しますね。 ・byte=01001011だとrev(01001011)=11010010と返すかどうかを検証するために、byte=01001011と仮定してトレースする。その中で2行目でbyte=01001011をrbyteに代入した…という認識で合ってますでしょうか? → 合っています。「解答群のプログラムが正しい挙動をするか」を 確認するためにトレースしています。 ・byteをrbyteにそのまま代入するだけなら、なぜbyteを直接使う(ア~エ選択肢でrbyteでなくbyteを使う)ことなく、rbyteを咬ませるのか疑問です。そしたら2行目が不要になり削除して、その分シンプルなプログラムになるのに。 → あくまで私の考えですが記載しますね。 まず、おっしゃる通り 変数rbyte を利用しなくても処理は実現でき、 rbyte を利用しない方が 関数は短くなります。 その上で「なぜ 変数byte を直接利用せず、rbyteに代入して利用しているのか」ですが、 これは「関数の呼び出し元で利用している変数の値を書き換えたくないから」だと思います。 変数byte を直接利用した場合、関数の呼び出し元で 引数として渡した変数の値が書き換えられてしまう場合があります。 ※ java言語の参照型変数など あるプログラムで利用している変数の値が、 そのプログラムではない別の関数で書き換えられてしまうことは、 「わかりやすいプログラム」という観点でいうと好ましくありません。 この問題は日本語ベースの擬似言語なので上記観点まで気にする必要はありませんが、 おそらくこういった理由から 変数byte を直接利用せず rbyteに代入して利用しているのだと思います。
@techlearner-wp3rv
Жыл бұрын
@@itgakko 丁寧な説明ありがとうございます。大元のbyteが万が一書き換えられてもいいように、rbyteというコピーを用意してこっちをメインに進めていくという感じですね。
@itgakko
Жыл бұрын
すみません、逆です。 関数内で byte の値が書き換えられた時に、 関数の呼び出し元でも byte の値が書き換えられてしまう場合があるということです。
@加藤弘樹-e9q
Жыл бұрын
問16文字コードについて質問させてください。codepointを64で割って余りが右に残るとのことですが、符合位置の例を使って計算の流れを説明いただけないでしょうか?この部分がどうも理解できません。
@itgakko
Жыл бұрын
質問ありがとうございます! この動画概要欄に「なぜ64で割った余りが後ろの64ビットになるのか」を具体例付きで補足していますのでそちらをご確認頂けますでしょうか?
@加藤弘樹-e9q
Жыл бұрын
自力で少し理解が進められたようにも思いますが、動画概要欄の内容を説明いただけないでしょうか?あいにく概要欄が確認取れません。何度も恐縮ですが、ご確認お願い致します。
@itgakko
Жыл бұрын
概要欄の見方が分からないとのことですね。 同じ内容を以下に記載しますのでご確認下さい。 ---------- なぜ64で割った余りが後ろの64ビットになるのか、 まず、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乗で割る
@加藤弘樹-e9q
Жыл бұрын
補足の御説明、誠にありがとうございました。10進数での流れを説明いただき、自身の理解が深めることができました。
@itgakko
Жыл бұрын
よかったです!
@itgakko
Жыл бұрын
動画で投影している教材はさいとうの公式LINEに登録頂くと無料でダウンロードできます! 無料で教材が欲しい方は概要欄からLINEに登録してみて下さいね! 今回の動画の教材名: ①【最短最速】科目B公式問題20問 問1〜問9 ②【最短最速】科目B公式問題20問 問10〜問20
@ヒナグリ
Жыл бұрын
問7のイも一応可変になるのではないかと思いましたが合ってますか? 27:20
@itgakko
Жыл бұрын
大変失礼しました。 おっしゃる通り問7の(イ)も可変となります。
@user-fansu
Жыл бұрын
掛け算を行う回数は可変でも1回でもなく0回ではないですか? 選択肢イだと、 どんなnの値を取っても最終的にfactorial(0)の値を出力する気がしますが、間違えてますか?
@itgakko
Жыл бұрын
@@user-fansu 遅くなりすみません。おっしゃる通り掛け算の回数は0回ですね。大変失礼しました。 関数の呼び出し回数だけ可変ですね。
@tatsuyanagao486
Жыл бұрын
問3について。どうしてtailにoutの末尾を入力するとわかるのでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます。以下に回答しますね。 ご質問は動画内8:57付近の「out[outの要素数]というのは配列の中の一番末尾の値をとってくるという風に言い換えられる」と言っている部分を指されていると思います。 具体例で考えるとわかりやすいです。下記、iの値ごとに tail ← out[outの要素数] が実行されるタイミングにおいて、 ・i=2の場合、out={3}、outの要素数=1、out[outの要素数]=out[1]=3 ・i=3の場合、out={3,5}、outの要素数=2、out[outの要素数]=out[2]=5 ・i=4の場合、out={3,5,6}、outの要素数=3、out[outの要素数]=out[3]=6 となっています。全てのケースでout[outの要素数]が配列outの末尾の値になっていることが見て取れると思います。 ご不明点などありましたらご連絡ください。
@akiper
Жыл бұрын
問9の処理①、②、③はどれですか? PGの文章の中に番号書いてないとわかりずらいです あと問題を解いてみて思いましたが、この問題は再帰ってなんでわかるんですか? order(1)を実行します。 tree[1]の判定 tree[1]={2,3} 要素数2 なので order(tree[1][1]=2) tree[2]の判定 tree[2]={4,5} 要素数2 なので order(tree[2][1]=4) tree[4]の判定 tree[4]={8,9} 要素数2 なので order(tree[4][1]=8) tree[8]の判定 tree[8]={} 要素数0 なので * 8を出力 endif * 4を出力←ここでなんで出力されるのですか?(これが一番聞きたいです) よろしくお願いいたします。
@akiper
Жыл бұрын
N=8の時は処理③ではないのでしょうか。要素が0のなので処理③だと思います。そこら辺因果関係が不明です
@akiper
Жыл бұрын
また、8が出力されたら二分木探索上、4しかないから4なのですか?
@itgakko
Жыл бұрын
ご質問ありがとうございます。 まず、問9の処理①②③について、以下の通りとなります。 ①order(tree[n][1]) ②nを出力 ③order(tree[n][2]) 上記がわかりづらくすみません。上記を把握していただくと、質問頂いている内容の多くが解決すると思われますので、ご確認のほどよろしくお願いします。 上記だけでは解決しない箇所について下記で回答します。 ・この問題は再帰ってなんでわかるんですか →再帰呼出とは、あるプログラムからそのプログラム自身を呼び出すことを指します。今回は order という関数の中の処理で order が呼び出されているのがプログラムを見てわかるので、再帰呼出だと判断できます。 ・4を出力←ここでなんで出力されるのですか? →簡略化するために n=4、n=8、n=9のケースだけに絞って説明します。以下にプログラムの実行される行を1行1行書きます。わかりやすくするために呼び出した関数のブロックを {~~~} で表しています。 ----------- order(tree[2][1] = 4) { _//order(4)の呼び出し_ if (tree[n]の要素数 が 2 と等しい = true) _//条件がtrue(真)なのでブロック内の3行の処理を実行する_ order(tree[4][1] = 8) { _//order(8)の呼び出し_ _//if文の結果がfalse(偽)となるケースは記載を省略します_ else _//tree[8] = {}なのでelseのブロックに入る_ *n=8を出力* } *n=4を出力* order(tree[4][2] = 9) { _//order(9)の呼び出し_ _//if文の結果がfalse(偽)となるケースは記載を省略します_ else _//tree[9] = {}なのでelseのブロックに入る_ *n=9を出力* endif } _//中略_ } _//以下省略_ ----------- 上記のようにプログラム1行1行の動きを追ってみると、 nの出力順序は 8 → 4 → 9 であることがわかります。 以上、ご不明点などありましたらご連絡ください🤗
@akiper
Жыл бұрын
@@itgakko ご回答ありがとうございます。 ☆nの出力順序は 8 → 4 → 9 order(8)が呼ばれた ↓ 8がブロックに入る ↓ その前でorder(4)が読んであるので、order( tree[2][1]=4 ←(他の解説者もここを省略しているから解説が分かりにくいと私は感じました.) ↓ 4を出力する。 ↓ 4を出力されたら、order(tree[4][2] = 9) { //order(9)の呼び出し ↓ 9を呼び出す という考え方でしょうか 私も再帰というのが分かっておらず質問があやふやになってしまいました。 ご了承ください
@itgakko
Жыл бұрын
@akiper 記載いただいた内容であっていると思います! プログラムの処理順序については、基本的に上から下!を意識すると良いと思います。 i=4,8,9 の処理をさらに簡略化して書くと以下のようになります。 先ほど記載した処理①、②、③を使って再帰呼出であることを意識しない形にしています。 ----------- order(tree[2][1] = 4) { _//order(4)として呼び出す_ if (tree[n]の要素数 が 2 と等しい = true) _//条件がtrue(真)なのでブロック内の3行の処理を実行する_ 処理① _//order(8) の呼び出し_ 処理② _//n=4を出力_ 処理③ _//order(9) の呼び出し_ _//中略_ } _//以下省略_ ----------- 上記の処理順序を考えてみると、「上から下!」なので処理①→処理②→処理③の順序になります。 それを踏まえた上で、処理①、処理②、処理③の中身を考えると、下記の通りになります。 ・処理①では、order(8)として呼び出しているので、その中身で「n=8」が出力され、 ・処理②では、そのまま「n=4」を出力、 ・処理③では、order(9)として呼び出しているので、その中身で「n=9」が出力されます。 また、動画の中でも触れていたかもしれませんが、再帰呼出については、 「あー、そんなこと(関数の中でその関数自体を呼び出す)もできるんだなぁ」くらいに留めておくのがいいかもしれません。 再帰呼出だから何か特殊なこと(処理順序が変わったり)があるという訳ではないので。 どんなプログラムでも、1行だけをみると複雑なことはしてないので、1行1行理解して読み解いていくのがいいと思います。 またいただいたアドバイスについては改善しますね。ありがとうございます。 以上、ご不明点ありましたらご連絡ください🤗
@かまささ-o7r
Жыл бұрын
解説とても助かっています。ありがとうございます! 問16が難しいです…。 素朴な疑問なのですが、1桁が1ビットとどこかで習って、6桁だと6bitだと思っていたのですが、64bitになるのがよく分からなくなってきました…(2^6で64になるのは理解できました)
@itgakko
Жыл бұрын
質問ありがとうございます。回答します。 まず、記載頂いた「1桁が1ビット」はあっています。 細かいのですが、より正確に言うと「2進数の1桁が1ビット」になります。 コンピュータ上の処理の話で、扱われるデータは 0 or 1 なので、 "2進数の"という枕言葉が必要です。 上記を踏まえた上で、記載頂いている ① 2進数の6桁は6ビット ② 2進数の6桁は64ビット こちらの違いについて説明しますね。 結論から言うと、どちらも間違いではありません。 ただし、どちらも日本語が一部省略されていて、 ① 2進数の6桁「のデータサイズ」は6ビット ② 2進数の6桁「で表現できる値の全パターン数」は64ビット と補足してあげるとどちらも適切で正しい記載になります。 まず①については、2進数の6桁なので、 1 or 0 が入る箱が6つあるイメージです。 例えば2進数「101010」であれば、以下のようになり、 コンピュータ上でのデータのサイズは 6ビット になります。 |1|0|1|0|1|0| 次に②については、具体的な2進数の値のデータサイズを表しているのではなく、 「6つの箱があれば、表現できる2進数の値は全部で 64(2の6乗)パターンある」 と言う意味になります。 ご質問頂いた内容に対する回答としては以上となるのですが、 問16で頂いた質問ということで、なぜ64で割る必要があるのか、 という部分に疑問があるかもしれませんので、 なぜ64で割るのかを下記に補足で記載しておきます。 何かご不明点などあればご連絡ください。 ーーーーーーーーーーーーーーーーーー なぜ64で割った余りが後ろの64ビットになるのか、 まず、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乗で割る ーーーーーーーーーーーーーーーーーー
@かまささ-o7r
Жыл бұрын
ご丁寧にありがとうございます!64で割る理由がピンときていなかったのですが、10進数で例えてくたさったらとても分かりやすかったです!今後も動画を活用させていただきます…!
@itgakko
Жыл бұрын
@@かまささ-o7r よかったです! 基本情報技術者試験の勉強頑張ってください!
@あさ-g6x
10 ай бұрын
いつもお世話になっております! ご質問がありまして、トレースの際は、実行結果を書くと さいとうさんから学びました。そこで、難易度が高くなったら実行結果の正しい表が作れません。表の順番の作り方をご教示頂きたいです。よろしくお願い致します!
@itgakko
10 ай бұрын
質問ありがとうございます! トレースする際はとにかく1行1行トレースすることが大事です。 最初の方は時間がかかるかもしれませんが、 1行1行しっかりとトレースすれば確実に正しい結果が出ます。 慣れるまでは時間がかかっても1行1行飛ばさずにトレースし、 慣れてきたら一部スキップしたりしてスピードを上げていくのが良いですね。
@あさ-g6x
10 ай бұрын
承知しました! 勉強になります。ありがとうございます
@itgakko
10 ай бұрын
@@あさ-g6x 勉強頑張ってください!
@第1空挺団-f1q
Жыл бұрын
問3、なんでoutの要素数は末尾になるんですか?
@itgakko
Жыл бұрын
回答させて頂きます。 ご質問は動画内8:57付近の「out[outの要素数]というのは配列の中の一番末尾の値をとってくるという風に言い換えられる」と言っている部分を指されていると思います。 具体例で考えるとわかりやすいです。下記、iの値ごとに tail ← out[outの要素数] が実行されるタイミングにおいて、 ・i=2の場合、out={3}、outの要素数=1、out[outの要素数]=out[1]=3 ・i=3の場合、out={3,5}、outの要素数=2、out[outの要素数]=out[2]=5 ・i=4の場合、out={3,5,6}、outの要素数=3、out[outの要素数]=out[3]=6 となっています。全てのケースでout[outの要素数]が配列outの末尾の値になっていることが見て取れると思います。 ご不明点などありましたらご連絡ください🤗
@第1空挺団-f1q
Жыл бұрын
@@itgakko ありがとうございます!めちゃくちゃ助かりました!!
9 ай бұрын
私も他の方がコメントされているのと同様に、 問4の「関数の処理とプログラム中の処理内容が同じであるため、繰り返し処理として扱うことができる」 が分かりませんでした。 私の理解力不足で申し訳ないのですが、 コメントで返されている内容を読んでも、いまいちピンと来ず、、 逆になぜifじゃダメなのかという視点で教えて頂けると幸いです。
@itgakko
8 ай бұрын
質問ありがとうございます! なぜifじゃダメなのか、 このように他の選択肢でも問題ないかを考える時には、 反例があるか考えてみてください。 例として、8 と 18 の最大公約数を問4のプログラム(空欄をif文にした場合)で求めます。 関数gcdを上から順にトレースしていきます。 プログラム各行の右側に斜体でトレースした結果を書いていきます。 ----- ◯整数型: (整数型: num1, 整数型: num2) _// num1=8,num2=18_ 1. 整数型: x ← num1 _// x=8_ 2. 整数型: y ← num2 _// x=18_ 3. if (x ≠ y) _// 8≠18なので4行目へ進む_ 4. if (x > y) _// 8>18ではないので6行目のelseに進む_ 5. x ← x - y 6. else 7. y ← y - x _// y=18-8=10になる_ 8. endif 9. endif 10. return x _// x=8が関数の呼び出し元へ返される_ ----- この例で関数から返される値は「8」になります。 8と18の最大公約数は「2」なので、if文の場合はこのように誤った結果になる場合があります。
@gnu9835
9 ай бұрын
質問です。 実行結果を書き出す時、変数に入れる値は何でも良いのでしょうか。 また、頭の中で処理できなかった時はとりあえず数字を入れてみる、で良いのでしょうか。 言葉足らずですみません、アドバイスを頂きたいです。
@itgakko
9 ай бұрын
質問ありがとうございます! 実行結果を書き出す時、変数に入れる値は問題によってどうすれば良いか変わります。 ・プログラムの実行結果が問われている問題 →問題文に具体的な値がきさいされているはずなのでその通りの値を使う。 ・そうでない場合 →基本的になんでも良いです。ただ、繰り返し処理があるなら配列の要素数は2以上にするとか、if文の条件を見て変数の値を決めるだったり少し考える必要があります。 頭の中で処理できなかった場合はおっしゃる通りとりあえず具体的な値を入れてトレースするのがよいですね! 原始的と思われるかもしれませんが紙に書いてみるのがよいです!
@user-fl6yp8nd5x
Жыл бұрын
問9の二分木の解説における、「n=8の処理③が出来ないので、1個上に戻る」という部分からの流れと意味がよく分からないのですが、詳細を教えて頂けないでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます。 関数order が 引数n=4 で呼び出されてからの流れで説明しますね。 プログラムは n=4 で呼び出されてから n=8 で実行されるまで以下の流れで処理されます。 ※実行されるプログラムの行のみ記載しています ---------- ・order(4) _// n=4 での呼び出し_ if (tree[n]の要素数 が 2 と等しい) _// tree[4] = {8, 9} で要素数2 なので ifブロック内の処理を実行_ order(tree[n][1]) _// 関数order を 引数n=8 として実行する ※ここでorder(4)の処理が中断され order(8) が実行されます_ ・order(8) _// n=8 での呼び出し_ if (tree[n]の要素数 が 2 と等しい) _// tree[8] = {} で要素数0 なので 下のelseif へ移動_ elseif (tree[n]の要素数 が 1と等しい) _// tree[8] = {} で要素数1 なので 下のelse へ移動_ else n を出力 _// 8 が出力され、order(8) の処理が終了。次は中断していた order(4)の処理 から実行される_ n を出力 _// 4 が出力される_ order(tree[n][2]) _// 関数order を 引数n=9 として実行する_ ---------- 上記のような処理の流れになります。 再帰呼び出しされた関数の処理が終了した場合、呼び出し元(1つ前)に処理が戻ります。 ただこれは再帰呼び出しだから特殊な処理になっているというわけではなく、 普通の関数呼び出しの場合も同じです。 例えば以下のように関数A の処理で 関数B、続いて関数Cが呼び出されるようなケースと同じです。 まず関数Bが呼び出されたタイミングで関数Aの処理が中断され関数Bの処理が先に実行されます。 関数Bの処理が終了したら関数Aに戻ってきて、引き続き「~~~を出力」「関数C()」この部分が順に実行されていきます。 ---------- ○関数A () 関数B() ~~~を出力 関数C() ---------- お話を聞く限り再帰呼び出しについての理解が若干不足している感がありますので、 本動画の問7を復習いただくか、以下別動画の問14.関数の再帰呼び出しで基本を学習頂くと良いと思います。 ✅【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する kzbin.info/www/bejne/rZKkqImOlp6saNE
@無課金ロゼータ
Жыл бұрын
@@itgakko 明日受験だから助かります。もっと早く知ればよかった。
@itgakko
Жыл бұрын
@user-uz9sj6sy8q 受験頑張ってください!
@aas-f5n
Жыл бұрын
今更な質問だと思いますが、 問14のi=2のとき、2.25が3になっているのは、 「小数点以下を切り上げる」とは四捨五入とは違って、小数点以下に数値があれば繰り上げるということでしょうか? 四捨五入してしまったため、2.25を2として計算してしまい答えが間違っていました。
@itgakko
Жыл бұрын
質問ありがとうございます! 記載頂いた通り「小数点以下を切り上げる」とは小数点以下に数値があれば(=.000... でなければ)繰り上げるという認識で大丈夫です。
@user-syachikuofyeah
Жыл бұрын
16の文字コードの問題で64ビットという数字が出てきましたがどのような計算で64が出てきたのか教えていただきたいです😢
@itgakko
Жыл бұрын
質問ありがとうございます。 なぜ64という数値なのか、長くなりますが以下に記載しますのでご確認ください。 ーーーーーーーーーーーーーーーーーー なぜ64で割った余りが後ろの64ビットになるのか、 まず、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乗で割る ーーーーーーーーーーーーーーーーーー
@井上-c7j
11 ай бұрын
自信があったのに500点で落ちてしまいました。 問題の難易度としても、11問は理解できていると思いながら解きましたが時間が足りなくて見直しを行いませんでした。 自分としては次の学習として何をするべきなのかわかりません。
@itgakko
11 ай бұрын
まずは試験お疲れ様でした! 仮に11問全て正解していたとしても不合格の可能性が高いので、 もっと問題演習をして実力アップ&解くスピードアップしていくのが良いですね!
@kt3221
Жыл бұрын
問5で青いラインの内容が、pow(x,2)+pow(y,2)になるのは、なぜでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます。回答しますね。 まずざっくり言うと、 青いラインの内容が「pow(x,2)+pow(y,2)」と言うより、 青いラインの内容から、 「xの2乗 + yの2乗」を関数powを使った形で表すと、「pow(x,2)+pow(y,2)」になる、と言うイメージです。 以下にさらに詳細を説明しますね。 問題文中の関数powの説明に 「第一引数として正の実数a を、第二引数として実数b を受け取り、aのb乗の値を実数型で返す」 とあります。 この説明から aのb乗、この計算を関数pow を使って表すと、 pow(a, b) となることが分かります。 プログラム中の「xの2乗 + yの2乗」にこれを当てはめると、 「pow(x,2) + pow(y,2)」となります。 以上の流れがご質問への回答となります。 ご不明点あればご連絡頂ければと思います。
@kt3221
Жыл бұрын
ありがとうございます。説明を受けると、問題文に書いて ある通りだと納得です。問題文の理解ができていませんでした。まだまだ頑張らないと。
@itgakko
Жыл бұрын
納得できてよかったです。 基本情報技術者試験の勉強頑張ってください!
@加藤弘樹-e9q
Жыл бұрын
問10配列操作に関して質問させてください。このプログラムで変数iが示すのはリストの添字ですか? for文iを2からpos-1まで1ずつ増やすというところがどうも理解できません。
@itgakko
Жыл бұрын
質問ありがとうございます! 変数i が示すのはリストの添字ではありません。 この問題の題材となっている単方向リストとは、添え字を持たない配列です。例えば {"A", "B", "C"} という単方向リストがあった場合、以下のようなデータ構造になっています。 【先頭の要素】 ・格納されている文字:"A" ・次の要素へのリンク:"B" 【2番目の要素】 ・格納されている文字:"B" ・次の要素へのリンク:"C" 【3番目の要素】 ・格納されている文字:"C" ・次の要素へのリンク:なし 単方向リストでは配列の要素にアクセスする際、先頭から芋ずる式に対象の要素にアクセスします。例えば3番目の要素"C"にアクセスする場合は、ダイレクトに"C"へアクセスするのではなく、先頭の要素→2番目の要素→3番目の要素の順に次の要素へのリンクを辿ってアクセスします。 これを前提に見直してみて下さい。その上でご不明点ありましたらご連絡いただければと思います。
@加藤弘樹-e9q
Жыл бұрын
ご返答ありがとうございました。単方向リストの挙動を理解することでスッキリしました。
@itgakko
Жыл бұрын
よかったです!
@蟹夫
10 ай бұрын
問10についての質問です。 iを2から POS -1まで1ずつ増やす処理の意味がよくわかりません、、、 pos=4の時の例で、繰り返しが二回になる理由がつかめずにいます。 どういう風に考えたらよいでしょうか?
@itgakko
9 ай бұрын
質問ありがとうございます! 以下for文の場合にiの値がどのように変わっていくか考えましょう。 ----- for (i を 2 から pos-1 まで 1 ずつ増やす) ----- まず「i を 2 から」とあるので、 繰り返し処理のスタート時点で i=2 になります。 次に「pos-1 まで 1 ずつ増やす」とあります。 pos=4の場合は「3 まで 1ずつ増やす」と置き換えられます。 これは iの値を1ずつ増やしていき、i=3まで繰り返したら 繰り返し処理を終了するという意味になります。 まとめるとpos=4の場合、 上記for文は以下のように2回の繰り返し処理になります。 ・1回目:i=2(スタート時) ・2回目:i=3(iの値が3になったので繰り返し処理終了)
@蟹夫
9 ай бұрын
@@itgakko さいとうさん 返信ありがとうございます。 今日この返信を拝見し、改めて問題を解いたらすんなり理解できました。 pos-1というのは、シンプルにposの値を1減らすという考え方でよかったのですね。 pos4の場合は当然4-1で3になりますから、 iの値が、posの値である3まで繰り返されるということですよね。 繰り返し処理そのものは自分も理解していたつもりですが、どうにも自分は問題の読解力が鈍いようです、、、 pos-1と最初に読み取って、問題文以上のことを考えてしまって、勝手に難しく捉えてしまっていました。 これで次に進めそうです。またよろしくお願いします。
@itgakko
9 ай бұрын
よかったです! 勉強頑張って下さい!
@bzhei48_dh3
Жыл бұрын
この動画のおかげで今日合格出来ました。ありがとうございました。
@itgakko
Жыл бұрын
合格おめでとうございます!
@qiaoqiao5345
Жыл бұрын
大変有用な解説動画をありがとうございます。 問16について質問があります。cpを64で割って余った数が後ろの64ビットになるという部分ですが、なぜこのようになるのでしょうか?説明が難しければ、理解するうえで抑えておくべき単元の内容をご教授いただけますと幸いです。よろしくお願いします。
@itgakko
Жыл бұрын
質問ありがとうございます。回答します。 まず、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乗で割る ご不明点ありましたらご連絡ください。
@qiaoqiao5345
Жыл бұрын
@@itgakko 無事理解できました。基礎の基礎からかみ砕いて説明してくださり大変助かりました。ありがとうございました!
@itgakko
Жыл бұрын
よかったです。 基本情報技術者試験の勉強頑張ってください!
@れおぱまる公式
Жыл бұрын
問14の問題で プログラムのところでi の中身を最初に格納しているのに実際解いていく時にfor文の所のi はなぜ1からスタートなのでしょうか。 また、findrankの計算の時のi でなぜプログラムで格納したi をこのタイミングで使うという考えが出てくるのでしょうか🥹 躓いてしまい先に進めません、、、
@itgakko
Жыл бұрын
質問ありがとうございます!それぞれ回答しますね。 ・プログラムのところでi の中身を最初に格納しているのに実際解いていく時にfor文の所のi はなぜ1からスタートなのでしょうか。 → for文のことをおっしゃっているのでおそらく 関数summarize 内の処理を指していると思います。 まず、関数summarize では i の値を最初に格納しておりません。 ただ「i がなぜ 1からスタートなのか」については、 「科目Bアルゴリズムの擬似言語では、配列の要素番号が1から始まるから」です。 for文の中で p[i] のように配列の要素に対してアクセスする処理があり、 配列の要素番号は1から始まるので、for文の記載として i を1から始めています。 ・findrankの計算の時のi でなぜプログラムで格納したi をこのタイミングで使うという考えが出てくるのでしょうか🥹 → すみません、こちらの理解が及ばなかったのですが、以下のことを指していますでしょうか? ----- ◯実数型: findRank(実数型の配列: sortedData, 実数型: p) 整数型: i i ← ( p × (sortedDataの要素数 - 1)) の小数点以下を切り上げた値 _// プログラムで格納したi_ return sortedData[i + 1] _// このタイミングで使う_ ----- なぜかと言うと「プログラムがそうなっているから」以外答えようがありません。 ※問題の作成者であれば分かるとは思うのですが... この問題は、プログラムの実行結果を問う問題なので、 質問頂いた内容を知らなくても答えを導き出せますので、 あまり気にしなくても良いとは思います。 以上、ご不明点ありましたらご連絡いただければと思います。
@chino_dutch5119
Жыл бұрын
すみません質問です。 問9のようなtree[n][2]はtree[n+2]という認識であっていますでしょうか? お返事お待ちしております。
@itgakko
Жыл бұрын
質問ありがとうございます。 tree[n][2] の意味は tree[n+2] ではなく、 「2次元配列 tree の n番目の配列の 2番目の値」という意味になります。 2次元配列は、配列の要素が配列になっているもののことです。問9で与えられている2次元配列 tree で説明しますね。 tree = { {2,3} ・・・tree[1] ,{4,5} ・・・tree[2] ,{6,7} ・・・tree[3] ,{8,9} ・・・tree[4] ,{10,11} ・・・tree[5] ,{12,13} ・・・tree[6] ,{14} ・・・tree[7] ,{} ・・・tree[8] ,{} ・・・tree[9] ,{} ・・・tree[10] ,{} ・・・tree[11] ,{} ・・・tree[12] ,{} ・・・tree[13] ,{} ・・・tree[14] } 2次元配列は、配列の要素1つ1つが配列となっているので、例えば上記の1要素の「tree[1]」これ自体が配列となります。 例えば普通の配列 array の2番目の値を取得する場合は、array[2] と書くと思います。 2次元配列 tree の場合では、「tree[1]」自体が配列なので、「tree の 1番目の配列 から 2番目の値を取得する」という意味合いで tree[1][2] という記述を使用します。この記述で配列 tree[1] の 2番目である「3」が取得できます。 何かご不明点ありましたらご連絡ください。
@chino_dutch5119
Жыл бұрын
お返事ありがとうございます。おかげで概要を理解することができました🙇
@itgakko
Жыл бұрын
よかったです。 基本情報の勉強頑張ってください!
@田村文太
Жыл бұрын
問14についてreturn sortedData[0+1]= の際にどうして1ではなく0.1になるのでしょうか?
@itgakko
Жыл бұрын
質問ありがとうございます! sortedData[0+1] の値がなぜ 0.1 になるかという質問だと思います。 状況を整理しましょう。 まず、配列sortedData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} であり、要素数10の実数型配列であることがわかります。 sortedData[0+1]、つまり sortedData[1] は上記の実数型配列の 1番目の要素 であることを意味しますので、値は 1 ではなく 0.1 になります。 以上、ご不明点あればご連絡いただければと思います。
@田村文太
Жыл бұрын
なるほど!sortedDataのことだったんですね💦ありがとうございます
@itgakko
Жыл бұрын
勉強頑張って下さい!
@えおあいう-f8n1f
11 ай бұрын
解説ありがとうございます。 問9の二分木の問題で、 order(1)の次にorder(2)が呼び出されるとのことですが、 tree[1][1]=2 になる理由がわかりません… よろしくお願いいたします🙇♀️
@えおあいう-f8n1f
11 ай бұрын
tree[1][1]とは tree[1]の配列{2,3}の要素[1]→2 という風に考えればよいという事でしょうか?
@itgakko
11 ай бұрын
ご認識の通りです! この問題で使われている二次元配列については 以下動画の問6で詳しく解説しているので よければこちらをご覧ください。 【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する kzbin.info/www/bejne/rZKkqImOlp6saNE
@えおあいう-f8n1f
11 ай бұрын
@@itgakko ありがとうございます! 他の書籍で二次元配列tree[1][1]のことを同じ意味でtree[1,1]と表現されていたため、混乱してしまったということがわかりました。 他の動画でも勉強させて頂きます!
@itgakko
11 ай бұрын
勉強頑張ってください!
@倉重直樹
10 ай бұрын
繰り返し視聴させていただいております 問3において、outの要素数が末尾の数字になるのはなぜでしょうか?? 「inの要素数まで増やす」だと、ハコに入っている数字の個数である6までなのに、outの場合は、ハコに入っている数字の数でなく、末尾の数字ではなるのが不思議で。。。
@ねこおじさん-h6r
10 ай бұрын
回答されていたので、転記します。 質問ありがとうございます!それぞれ回答しますね。 > 問3の「out{outの要素数}」のところは、なぜoutの末尾の値を取ってくると言い換えられるのでしょうか。 → まず前提知識として、配列から特定の要素の値を取得する場合、 「 配列名 [ 要素番号 ] 」の形で記述します。 例えばarray という名前の配列があった場合、 array[1] と記述することで arrayの1番目の要素を取得することができます。 その上でこの問題の「out[outの要素数]」という記述の意味を考えると、 「 配列out の "outの要素数"番目 の値」ということになります。 具体例で見てみましょう。 配列out の状態によって「out[outの要素数]」の値は以下のようになります。 ・out = {3}:out[outの要素数] = 3(配列outの1番目の値) ・out = {3,5}:out[outの要素数] = 5(配列outの2番目の値) ・out = {3,5,6}:out[outの要素数] = 6(配列outの3番目の値) 上記を見ていただければ分かるように out[outの要素数]は配列outの末尾の値になっていることがわかると思います。 > 要素数という言葉が問題集などでも問題によって捉え方が異なっていたりすることがあり、いまいちしっくりきてません。。 対策方法等ありますでしょうか。 → 要素数という言葉はIPAから出されている過去問やサンプル問題では一貫した意味になっています。 「 〜〜〜 の要素数」というような記述があった場合、 指定された配列の要素の数を表すという以外の意味はありません。 対策ということになってはいないかもしれませんが、 上記で述べたIPA公式の問題で使用されている意味で覚えるべきですね。 以上、ご不明点ありましたらご連絡いただければと思います。
@itgakko
10 ай бұрын
質問ありがとうございます! 転記いただいた内容の通りですので、 そちらをご確認いただければと思います。
@itgakko
10 ай бұрын
@@ねこおじさん-h6r 転記ありがとうございます!
@倉重直樹
10 ай бұрын
@@itgakko 何となくイメージ湧きました!ありがとうございました。今週三回目の挑戦となりますが、動画を繰り返し視聴し、今度こそ受かるように頑張ります
@itgakko
10 ай бұрын
試験頑張ってください!
@選ばれたのは綾鷹でした-d7b
10 ай бұрын
質問が2点ございます。 1点目は問4について、そもそもの関数の処理とプログラム中の処理内容が同じであるため、繰り返し処理として扱うことができるという部分が分かりませんでした。 繰り返しnum1-num2とnum2-num1の値を変化させることで、num1とnum2の最大公約数を求めるという意味でしょうか? 2点目は問10について、prev←prev.nextの処理について、前の処理でprevには「あ」が代入されていて、prevには「あ」しか入っていないと思ったのですが、なぜprevの次の要素が「い」や「う」になるのでしょうか。
@itgakko
10 ай бұрын
質問ありがとうございます!それぞれ回答しますね。 > 1点目は問4について、そもそもの関数の処理とプログラム中の処理内容が同じであるため、繰り返し処理として扱うことができるという部分が分かりませんでした。 > 繰り返しnum1-num2とnum2-num1の値を変化させることで、num1とnum2の最大公約数を求めるという意味でしょうか? そうですね!おっしゃる内容であっていると思います。 念の為補足させていただくと 「関数の処理とプログラム中の処理内容が同じであるため、繰り返し処理として扱うことができる」 というのは例えば以下のようなイメージですね。 ----- 1 を 2倍する 2 を 2倍する ----- 上記のような処理があったときに、 2行を分けて記載するのではなく、 以下のように1つの繰り返し処理にまとめることができるということです。 ----- for (i を 1 から 2 まで 1ずつ増やす) i を 2倍する endfor ----- 本問題での関数の目的は「引数num1 と 引数num2 の最大公約数を求める」 関数内の処理は 「(num1 - num2) と num2 の最大公約数を求める」または 「(num2 - num1) と num1 の最大公約数を求める」 このようになっていることから、 関数内の処理について、num1とnum2の値を変化させながら 繰り返し行うことで最終的に関数の目的である「引数num1 と 引数num2 の最大公約数を求める」を 実現できるということです。 > 2点目は問10について、prev←prev.nextの処理について、前の処理でprevには「あ」が代入されていて、prevには「あ」しか入っていないと思ったのですが、なぜprevの次の要素が「い」や「う」になるのでしょうか。 こちらはおそらくオブジェクト指向に関する理解がまだ不足しているかもしれません。 以下で詳しく解説しているのでまずは以下をご覧いただくのが良いかと思います。 【問題演習付き】科目Bオブジェクト指向完全攻略(基本情報技術者試験|アルゴリズム) kzbin.info/www/bejne/l5XNdJmcebmKpKc
@選ばれたのは綾鷹でした-d7b
10 ай бұрын
@@itgakko ありがとうございます!オブジェクト志向は提示していただいた動画で理解することができました。本当にありがとうございます!
@itgakko
10 ай бұрын
よかったです!
@ffffrrrreeeeeeee
Жыл бұрын
ありがとうございます。初学者なので大変助かります。問13で、選択肢 エ)も無限ループになってしまいます、、、どこかを勘違いしているのですが、もしお時間あれば教えてください。例えば、data [-1, 1], target 1 ではどうなるか教えていただけるとありがたいです。
@itgakko
Жыл бұрын
ご質問ありがとうございます。 まず、記載頂いた data=[-1,1]、target=1 のケースですと、「(ウ)要素数が2で、target が dataの末尾要素の値と等しい」ケースにも当てはまってしまい、無限ループとなってしまいます。 ですので、記載頂いたケースとは別に、「(エ)要素に -1 が含まれている」ケースで無限ループにならない例を記載します。data=[-1, 2, 3], target=2 です。以下プログラムと各行の実行結果です。実行結果を 「_//斜体のコメント_」で記載しています。 ---------- low ← 1 high ← dataの要素数 _//high = 3_ while (low target) _// elseif (2 > 2) = false(偽) なので elseまでスキップ_ else return middle _// return 2 となり、targetと同じ値が格納されている要素番号が返されるので無限ループしない。_ ---------- ただ、この問題の少し複雑な箇所として、「(ウ)要素数が2で、target が dataの末尾要素の値と等しい」が無限ループとなる唯一の条件ではない(十分条件ではあるが必要十分条件ではない)と言う点です。 ※なので、問題文の中に「例えば...」という記載があるようです。 例えば(ウ)には合致しませんが、以下のケースは無限ループします。 data=[-1, 2, 3], target=4 ---------- low ← 1 high ← dataの要素数 _//high = 3_ while (low
@ffffrrrreeeeeeee
Жыл бұрын
@@itgakko ご丁寧にありがとうございます。恐れ入ります。やっとスッキリしました。問題(選択肢)に若干クセがあるような気もしますが、学習を続けていくうちにさらに理解できるかもしれません。この動画のおかげで科目Bに取り組めています。合格に向けて頑張れそうです。
@itgakko
Жыл бұрын
@@ffffrrrreeeeeeee ご返信ありがとうございます! おっしゃる通り他の問題と少し毛色が違うかもしれませんね。 「試験の制限時間内に解く」という意味では全問正解を目指すより優先度をつけて解ける問題から解くということも大事になると思います。このタイプの問題は時間がかかりそうなので試験では後回しでもいいかもしれません。 どの問題から解くか、を動画化するのも検討してみますね。 基本情報技術者試験の勉強頑張ってください🤗
@与田マル
9 ай бұрын
問14の i←(p×(sortedDataの要素数-1))のpの値がわかるのはどのタイミングですか? 文章がわかりにくくてすみません。
@itgakko
9 ай бұрын
質問ありがとうございます! pの値がわかるのは、 関数findRank(実数型の配列: sortedData, 実数型: p)が呼び出されたタイミングですね! 具体的には、プログラムの以下箇所で関数findRankは呼び出されています。 ----- rankDataの末尾 に findRank(sortedData, p[i])の戻り値を追加する ----- 関数を呼び出す時は関数に対して引数を渡します。 (関数findRankの場合は sortedData, p の2つ) 上記の呼び出し例ではfindRankの引数に sortedData と p[i] を渡しています。 この p[i] が関数findRank内での p に対応します。
27:36
【最速】科目B公式過去問を徹底解説(基本情報技術者試験)
実践の鬼:IT学校さいとうさん
Рет қаралды 64 М.
3:42:20
【科目B】アルゴリズム問題をたった1動画で対策_基本情報技術者試験
【基本情報技術者試験YouTuber】すーさん
Рет қаралды 606 М.
00:31
Support each other🤝
ISSEI / いっせい
Рет қаралды 81 МЛН
00:16
When you have a very capricious child 😂😘👍
Like Asiya
Рет қаралды 18 МЛН
01:01
Мясо вегана? 🧐 @Whatthefshow
История одного вокалиста
Рет қаралды 7 МЛН
00:33
⚡Токаев ШОКИРОВАЛ Кремль! РАЗМАЗАЛ заявлением Путина #shorts
24 Канал
Рет қаралды 941 М.
37:25
【重要】2024年10月より科目Aの出題範囲が追加されます
【基本情報技術者試験YouTuber】すーさん
Рет қаралды 59 М.
1:11:36
【初心者向け】基本情報技術者試験 科目B|アルゴリズムをゼロから理解する
実践の鬼:IT学校さいとうさん
Рет қаралды 115 М.
54:23
英文契約書を日本語に訳する場合の注意点【栗林総合法律事務所オンラインセミナー】
栗林総合法律事務所
Рет қаралды 14
33:55
【2023年版】基本情報技術者試験完全攻略(科目B解説編)
実践の鬼:IT学校さいとうさん
Рет қаралды 89 М.
1:48:49
【問題演習付き】科目Bオブジェクト指向完全攻略(基本情報技術者試験|アルゴリズム)
実践の鬼:IT学校さいとうさん
Рет қаралды 44 М.
16:24
【絶対するな】知らないと損する基本情報技術者試験勉強法
実践の鬼:IT学校さいとうさん
Рет қаралды 29 М.
16:48
【要約】世界の一流は「休日」に何をしているのか【越川慎司】
フェルミ漫画大学
Рет қаралды 170 М.
12:29
「私はロボットではありません」に回答すると情報盗取マルウェア「Lumma Stealer」に感染
プロが簡単解説 あなたを守る 情報セキュリティ
Рет қаралды 253 М.
2:17:25
【永久保存版】科目A過去問10回分解説|1.基礎理論編(基本情報技術者試験)
実践の鬼:IT学校さいとうさん
Рет қаралды 53 М.
8:03
How to STUDY so FAST it feels like CHEATING
The Angry Explainer
Рет қаралды 2,3 МЛН
00:31
Support each other🤝
ISSEI / いっせい
Рет қаралды 81 МЛН