【paiza】【getsとgets.chompの違い】D問題を改めて解いていて感じたこと
はじめに
ここ数ヶ月、毎日paizaを30分から1時間程度解いております。
アルゴリズムは得意な方ではなかったので、D問題、C問題(標準出力/標準入力)を中心に解いておりましたが、
こちらの記事を拝見し、C問題のスキルチェックテストに入る前にもう一度復習し直そう!と思い立ちました。
D問題のこちらの[問題[(https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str) を解いている中で、改めてgetsとgets.chompの違いを考えさせられたので、今回記事にしたいと思います。
初歩的な内容となりますが、ご了承いただけますと幸いです。
getsとgets.chomp
今回の問題[(https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str) で、最初書いたコードは下記です。
a = gets
b = gets
if a == b
puts "OK"
else
puts "NG"
end
このコードをテストに通したところ、いくつかのケースでエラーが出てしまいました。
問題文を再度確認し、「入力される値」の箇所に入力値最終行の末尾に改行が1つ入りますとの文言があり、a,bに代入するのはgetsメソッドではなく、gets.chompメソッドと気が付き正解しました。
gets.chompで入力を受け取る形だと少しわかりづらいため、a,bに文字列をそのまま代入しVSC上で確認を行いました。
a = "paiza"
b = "paiza\n"
if a == b
puts "OK"
else
puts "NG"
end
=> "NG"が出力される
文字列として代入されるのは同じ「paiza」ですが、bの場合には末尾に改行(\n)が入っているため上記では "NG"が出力されます。
そのため、chompメソッドを使用して改行文字を削除しないとaとbが同じ文字列として認識されません。
基本的なことですが、paizaを始めた当初はなんとなくchompメソッドを使用していたので、改めてD問題を解くことで基本に立ち返ることができました。
初歩的な内容でしたが、最後までご覧いただきありがとうございました。
Discussion