まあ聞いてくれ。
自分はAtCoderという競技プログラミングサイトに登録して、たまにコンテストに参加しては玉砕し、ズブズブ灰コーダーの道にハマっている。*1
たまにABCのC問題まで解けるが、酷いとB問題でハマって抜けられなくて諦めるという事がしばしばあり、成績が安定しない。*2
もともと組み込みの仕事でC言語を使ってコーディングしていたのでCでやっていたが、どういう形で処理すればいいのかは分かるのに実装で躓いた。scanfやprintfなんぞ業務でほぼ使ったこと無かったのでポインタや引数の仕様で色々な混乱が発生した。あとC言語にはstringが無いので文字列処理をint[ ]でやってたら手間のかかることかかること。
エラーの処理もうまく行かないしこのままWAになって踊っているとモチベがだだ下がって終わってしまうと考え、プログラマ超初心者用のAtCoder Programming Guide for BeginnersでC++の勉強をしてこれまた初心者用のAtCoder Beginners Selectionに挑戦することにした。
ド初心者と考えて一からやり直すと、意外とこれが良い。
まずC言語がC++になったことで文字列処理が楽になるだけでなく、入力や出力で変数の型を考える必要がなくなった。*3
そもそもC++にはCのバージョンアップしたライブラリが標準搭載されているのは当然だが、sort書くだけでも記述量が全く異なり、Cでは関数を用意せねばならなかったのがC++では一行で済む。天国か?
エラーの弾き方も学習内容に入っているため、進めていくとバグ取りの速度が上がっているのを体感できる。ACは健康にいい。
それでいて自分はド初心者ではないので、「難しい」と書いてある問題でも何が必要でどう解けばいいのかおおよそ理解できるので、疑似俺TSUEEEEが出来る。実際に強いかは関係ないのだ。上を見るとカラフルで眩しくて勉強する前に心が折れるから、下を向いて小さな承認欲求から積み上げていく小市民になるのだ。
兎に角、壁にぶつかったら最初からやり直してみるという手はアリなのだと体感した。AtCoder Beginner Contest 166 3完したいなぁ。*4