引き続きプログラミングの基礎体力づくりと、Pythonの勉強を兼ねてアルゴリズムを勉強中です。今回は『括弧閉じているかのチェック』について勉強しました。AIZU Online Judgeで対応している問題は、『The Balance of the World』です。パズル問題ですが、空き時間が10分あれば十分に解けるお手軽問題ですので、もしお時間があればぜひ!
def check_block(str) q = [] str.gsub(/[^()\[\]]/, '').chars.each do |c| if c == '(' or c == '[' q.push(c) elsif c == ')' r = q.pop() rescue nil return 'no' if r != '(' elsif c == ']' r = q.pop() rescue nil return 'no' if r != '[' end end q.count == 0 ? 'yes' : 'no' end
while gets break if $_.chomp == '.' puts check_block($_.chomp) end
🎃 Pythonコード
while True: s = raw_input() if s == '.': break
ns = '' for c in s: if c in ['(', ')', '[', ']']: ns += c
while True: tmp = ns ns = ns.replace('[]', '') ns = ns.replace('()', '') if (tmp == ns): break