読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

【競技プログラミング】そのstring、本当に変数に格納しておく必要がある??

競技プログラミングでの小さな気づきをメモ。

問題はこちら。

abc019.contest.atcoder.jp

 

文字列が与えられるので、連続する文字と文字数を出力しなさいという問題。

例えば、'aabbbaad' は 'a2b3a2d1' と出力する必要があります。

 

僕の最初の回答がこちら。

gist9f9559693438e2d5c227

 

処理内容を説明すると、文字列を走査して、その結果をconverted_strという変数に格納しています。

 

一方で、ある気付きを得たあとの回答がこちら。

gist3d4b6c939262d3ecbaa5

(急にRubyですみません…)

 

後者の回答では、converted_strのような変数を用意していません。

文字列を操作しながら、その都度その結果を出力しているのです。改行を挟まないので、あたかも1行の出力のように見えます。

 

どこかにメモして最後に出力するのではなく、毎度出力すればいいよね。という考えです。

この方法を使うことで、ムダな変数を1つ定義せずに済みます。メモリを節約することができるのです。

 

…もちろん、他の方の回答を見て知りましたが。