科目B・擬似言語

科目Bを、読める順番で練習する(3ページ目)

科目Bはアルゴリズム(擬似言語)と情報セキュリティで構成され、独自記法の擬似言語に慣れているかどうかが結果を分けます。 ここでは360問のオリジナル練習問題を、解説つきで1問ずつ確認できます。 このページは121〜180問目です。

擬似言語を読む3つの要点

  1. 変数の表を書く — 頭の中で追わず、ループ1周ごとに各変数の値を書き出す(トレース)。速さは後からついてきます。
  2. 境界だけ疑う — ループの開始・終了、配列の端、条件の等号。擬似言語の設問はほぼここで差がつきます。
  3. 毎日数問、短く — 長文を週末にまとめて読むより、短い問題を毎日トレースするほうが記法に慣れます。

アルゴリズムとプログラミング48問

ビット演算次の擬似言語は、非負整数 n の 2 進表現で 1 になっているビットの個数(ポップカウント)を返す手続である。mod は剰余を表し、「÷ の商」は整数除算…ビット演算次の擬似言語で AND はビットごとの論理積、>> は右シフトを表す。8 ビットの値 x から上位 4 ビットを取り出すことを意図しており、x = 182 …数値演算次の擬似言語は乗算記号を使わず、被乗数 a を係数 b の各ビットに応じて加算することで a × b を計算する手続である。<< は左シフト、>> は右シフ…数値演算次の擬似言語は 2 つの正整数 a, b の最小公倍数を、最大公約数を用いて求める手続である。手続 gcd は最大公約数を返すものとし、「÷ の商」は整数除…数値演算次の擬似言語は整数 n が素数なら true、そうでなければ false を返す試し割りの手続である。mod は剰余を表す。n = 91 を与えて実行したと…数値演算次の擬似言語は底 base を指数 exp 回掛け合わせる累乗 base の exp 乗を反復で計算する手続である。power(3, 5) を実行したとき、…数値演算次の擬似言語は 10 進の非負整数 n を 8 進数の文字列に変換して返す手続である。mod は剰余、「÷ の商」は整数除算を表し、+ は文字列の前方への連…数値演算次の擬似言語は、正整数 n に対し、偶数なら 2 で割り、奇数なら 3 倍して 1 を足す操作を n が 1 になるまで繰り返し、その操作回数(ステップ数)…ビット演算次の擬似言語は 8 ビットの値 x の全ビットを反転(0↔1)した値を返す手続である。XOR はビットごとの排他的論理和を表す。x = 89 を与えて実行し…数値演算次の擬似言語は正整数 n の 10 進表現の桁数を返す手続である。「÷ の商」は整数除算(小数部切り捨て)を表す。n = 7045 を与えて実行したとき、戻…ビット演算次の擬似言語で、<< は左シフト、OR はビットごとの論理和、AND はビットごとの論理積を表す。整数 x の第 k ビット(最下位を第 0 ビットとする)…数値演算次の擬似言語は、'0' と '1' から成る 2 進数の文字型配列 bits を上位桁(先頭)から読み、対応する 10 進数を返す手続である。bits = …配列/集計次の手続 freqMid は、得点を格納した配列 arr のうち 60 点以上 80 点未満(60 ≦ 得点 < 80)の人数を数えて返す。arr = {5…配列/集計配列 grp には各売上のグループ番号(1 または 2)、配列 amt には同じ添字の売上額が格納されている。次の手続 sumGroup1 はグループ番号が…2次元配列2 行 3 列の 2 次元配列 t に次の値が格納されている(添字は行・列とも 1 から)。 t[1][1]=12, t[1][2]=8, t[1][3]=…2次元配列3 行 2 列の 2 次元配列 t に次の値が格納されている(添字は行・列とも 1 から)。 t[1][1]=4, t[1][2]=11 t[2][1]=7…配列/集計配列 stock には各商品の在庫数が格納されている。次の手続 lowStock は在庫数がしきい値 10 未満(< 10)の商品の件数を返す。stock …配列/集計配列 score には得点が格納されている。次の手続 countTopN は、まず最高点を求め、最高点との差が 5 点以内(最高点 − 得点 ≦ 5)の人数…配列/集計配列 d には 1〜3 の番号が格納されている。次の手続 maxFreq は、番号 1, 2, 3 それぞれの出現回数を数え、その中の最大の出現回数を返す。…配列/集計配列 v に値が格納されている。次の手続 countAbove は、まず全要素の平均(整数除算、小数部切り捨て)を求め、その平均を超える(> 平均)要素の個…配列/集計配列 t には気温(整数)が格納されている。次の手続 classify は、25 以上を『暑』、15 以上 25 未満を『適』、15 未満を『寒』に分類し、…配列/集計配列 a には 0 と 1 が格納されている。次の手続 maxRun は、1 が連続する区間の最大の長さを返す。a = {1, 0, 1, 1, 1, 1,…配列/集計配列 f には階級ごとの度数(人数)が格納されている。次の手続 cumUpTo は、第 1 階級から第 k 階級までの累積度数を返す。f = {3, 7, …2次元配列3 行 2 列の 2 次元配列 t に次の売上が格納されている(行=日、列=商品、添字は行・列とも 1 から)。 t[1][1]=40, t[1][2]=2…グラフ5 個のノード 1〜5 から成る無向グラフを、隣接行列 M で表す。M[i][j] が 1 ならノード i と j の間に辺があり、0 なら辺がない(添字は…グラフ有向グラフを次の辺リストで与える(u → v は u から v への辺を表す)。 1→2, 1→4, 2→3, 2→5, 3→5 次の深さ優先探索 dfs …グラフ有向グラフを次の辺リストで与える(u → v は u から v への辺を表す)。 1→2, 1→4, 2→3, 4→5, 3→5 次の幅優先探索 bfs を…グラフ閉路のない有向グラフ(DAG)を次の辺リストで与える(u → v は u から v への辺)。 1→2, 1→3, 2→4, 2→5, 2→6, 3→4, …グラフ有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→2, 1→3, 2→4, 5→1 次の手続 reachCount は、始点 …グラフ6 個のノード 1〜6 から成る無向グラフを隣接行列 M で表す(M[i][j]=1 で辺あり、添字は 1 から、自己ループなし)。 M[1] = {0,1…グラフ5 個のノード 1〜5 から成る無向グラフを隣接行列 M で表す(M[i][j]=1 で辺あり、添字は 1 から、自己ループなし。無向なので M は対称)。…グラフ無向グラフを次の辺リストで与える(u — v は u と v を結ぶ辺)。 1—2, 1—3, 2—4, 3—4, 3—5, 4—6, 5—6 次の手続 s…グラフ無向グラフを次の辺リストで与える(u — v は u と v を結ぶ辺)。 1—2, 2—3, 4—5 次の手続 isConnected は、深さ優先で始点…グラフ有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→3, 2→3, 4→3, 2→5, 4→5 各ノードの入次数(そのノードへ入…グラフ6 個のノード(番号 1〜6)からなる有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→2, 1→3, 2→4, 3→4, 2…グラフ4 個のノード 1〜4 から成る有向グラフを隣接行列 M で表す。M[i][j]=1 ならノード i から j への有向辺があり、0 なら辺がない(添字は …配列/操作次の手続 makeReverse は、整数型の配列 arr を逆順に並べた新しい配列 rev を作って返すことを意図している。arr = {11, 22, …ループ次の手続 sumDown は、整数 n から 1 まで(n, n−1, …, 1)の総和を返すことを意図している。i を n から 1 ずつ減らしながら加算…配列/集計次の手続 product は、整数型の配列 arr の全要素の積を返すことを意図している。arr = {2, 3, 5}(要素数 3、添字は 1 から)のと…ループ次の手続 sumOddIndex は、配列 arr の奇数番目(添字 1, 3, 5)の要素の合計を返すことを意図している。arr = {10, 20, 3…配列/集計次の手続 countAbove は、配列 arr の中で基準値 t を「超える」(t より大きい)要素の個数を返すことを意図している。arr = {5, 1…探索次の手続 indexOf は、配列 arr を先頭から走査し、値 target が最初に見つかった添字を返すことを意図している(見つからなければ −1)。a…配列/集計次の手続 countEqualPair は、隣り合う 2 要素 arr[i] と arr[i+1] が等しい組の個数を数えることを意図している。arr = …配列/操作次の手続 rotateLeft は、配列 arr を左へ 1 つ巡回させた新しい配列 out を返すことを意図している。arr = {1, 2, 3, 4}…ループ次の手続 fact は、1 から n までの積(階乗 n!)を返すことを意図している。n=5 のとき正しく 120 を返すよう、空欄 [ a ] に入れる更…ループ次の手続 halveCount は、正の整数 n を 2 で割る(整数除算で小数部切り捨て)操作を 0 になるまで繰り返した回数を返すことを意図している。「…配列/集計次の手続 total は、整数型の配列 arr の全要素の合計を返すことを意図している。for ループは添字 1 から要素数まで全要素を加算する。arr =…整列次の手続 onePassAsc は、配列 arr に対して隣接交換を 1 パス行い、最大値を末尾へ送る(昇順整列の 1 パス)ことを意図している。arr =…

情報セキュリティ12問

標的型攻撃A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消えた。担当者はマルウェア感染を疑…認証B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事象が発生した。パスワードは推測困…アクセス制御C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情報漏えいリスクを下げる運用上の根…マルウェアD社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックアップ装置は常時サーバとネットワー…フィッシングE社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行サイトとよく似たログイン画面が表…暗号F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改ざんされるリスクを下げる対策インシデント対応G社では情報セキュリティインシデントが発生した際、各部署が個別に対応し、被害状況の集約や対外的な情報発信が混乱した経緯がある。G社がCSIRTを設置する目的リスクアセスメントH社では、めったに発生しないが発生すれば極めて大きな損害となる災害リスクについて検討している。自社で対策設備を整えるには多額の費用がかかり、費用対効果が見合…物理セキュリティI社のサーバ室はICカードによる入退室管理を行っているが、社員が認証した後に開いた扉から、認証していない者が一緒に入室する事象が確認された。この問題への対策ログ管理J社では、不正アクセスの調査時に各サーバのログを参照したところ、攻撃者がログを改ざん・削除した痕跡があり、調査が困難になった。ログを証拠として確実に活用する…メールセキュリティK社では、担当者が顧客の個人情報を含むファイルを誤った宛先にメール送信する事故が複数回発生している。送信操作に起因する情報漏えいを未然に防ぐ仕組み認証L社のヘルプデスクに、社員を名乗る人物から『出張先でパスワードを忘れた。急ぎなので電話で仮パスワードを教えてほしい』という連絡が入った。声から本人かどうかは…
科目Bのトレースを、そのまま画面上で。

登録すると、擬似言語のトレースを1行ずつ画面で追える練習モードと、間違えた問題の解き直しが使えます。科目Aの過去問演習・模試も無料枠で試せます。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

基本情報技術者 科目B対策(3ページ目)|擬似言語の読み方と練習問題|ukamiru