💄

【paiza】【getsとgets.chompの違い】D問題を改めて解いていて感じたこと

2024/08/29に公開

はじめに

ここ数ヶ月、毎日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