search
LoginSignup
0

posted at

crystal の AtCoder における Set の使用(健忘録)

はじめに

@u2dayo さんのコードを写経していましたところSetを使用されていました。
普段はHashで代用していますが、Setの使用方法の健忘録とCrystallizer2の更新を行いました。

C問題『Poem Online Judge』

Ruby版

require "set"

n = gets.to_i
seen = Set.new
max_t = -1
ans = 0
(1...n+1).each do |i|
  s, t = gets.split
  next if seen.include?(s)
  seen << s
  t = t.to_i
  if max_t < t
    max_t = t
    ans = i
  end
end
puts ans

Rubyですとrequire "set"しないといけないです。

crystal版

require "set"

n = read_line.to_i
seen = Set(String).new
max_t = -1
ans = 0
(1...n+1).each do |i|      
  s, t = read_line.split   
  next if seen.includes?(s)
  seen << s
  t = t.to_i
  if max_t < t
    max_t = t
    ans = i
  end
end
puts ans

crystalではrequire "set"は本来不要ですが、あっても動作するようなので、とりあえずそのままとしています。

- seen = Set(Int32).new
+ seen = Set(String).new

この部分はInt32に決め打ちをしていますので、問題に合わせ修正する必要があります。

Ruby crystal
実行時間(ms) 183 51

まとめ

crystalSetに詳しくなりました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0