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

基本情報技術者試験次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正しいかを調べ、正しければ "OK"、誤っていれば…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正しいかを調べ、正しければ "OK"、誤っていれば "NG" を返す手続である。push は積む、pop は取り出す、isEmpty はスタックが空なら真を返す。s = {'(','(',')','(',')',')'}(要素数 6、添字は 1 から)を与えて実行したとき、戻り値はどれか。
○文字列型: checkParen(文字型の配列: s)
  整数型: i
  for (i を 1 から sの要素数 まで 1 ずつ増やす)
    if (s[i] が '(' と等しい)
      push('(')
    elseif (s[i] が ')' と等しい)
      if (isEmpty())
        return "NG"
      endif
      pop()
    endif
  endfor
  if (isEmpty())
    return "OK"
  endif
  return "NG"
"OK"
異常終了する
"N"
判定不能
正解
ア."OK"

'(' で push、')' で pop する。各 ')' の直前にスタックは空でなく途中で "NG" を返さず、走査後にスタックが空になるため最後に "OK" を返す。よって アが正しい。

?選択肢ごとの解説

ア ○'(' で push、')' で pop する。各 ')' の直前にスタックは空でなく途中で "NG" を返さず、走査後にスタックが空になるため最後に "OK" を返す。よって アが正しい。
イ ×配列外参照などで異常終了すると誤認した結果だが、本入力では添字が範囲内に収まり正常に "OK" を返す。
ウ ×"N" を返す経路は存在せず、戻り値が "OK"/"NG" の 2 値であることを取り違えた誤りである。
エ ×途中で isEmpty() が真になり判定できないと誤認した結果だが、本入力では対応が完全に取れ "OK" が確定する。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

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

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0028

【基本情報技術者試験】次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正し…|正解「"OK"」|ukamiru 過去問