Codeforces 146 A. Lucky Ticket

問題

n桁の数字が書かれたチケットがある。
このチケットがLuckyであるとは、

  • 各桁の数字が4または7
  • 前半のn/2文字と後半のn/2文字の数字の和が等しい

ことを言う。

与えられたチケットがLukcyであるかそうでないかを判定せよ。

制約条件

n≦50

方針

rubyで書いてみた。
文字列処理系の問題では正規表現を使うともっと簡単に書けるっぽい。

ソースコード

n = gets.to_i
a = gets

if a.count("4") + a.count("7") != n
 puts "NO"
 exit
end
if a[0...n/2].bytes.inject(0,&:+) == a[n/2...n].bytes.inject(0,&:+)
  puts "YES"
else
  puts "NO"
end