PaizaのDランク演習問題を解いていく。
プログラミングの上達には、数多く演習問題をこなして慣れていくことが一番なのかもしれない。
「コードガールこれくしょん」を置いているPaizaのサイトには、無料で可能な演習問題が多数揃っています。
Paizaの演習問題は、「レベルアップ問題集」の場所にあり、S~Dと難易度別に分けられています。Sが最も難易度が高く、Dが最も難易度が低いです。まずはDランクの演習問題から解いていきます。
Dランクの演習問題をいくつか解いたところ、「コードガールこれくしょん」の各言語のnormalを最後のステージまで終わらせていれば十分に対応可能でした。
すなわち、標準入力からデータの受け取り、計算を含む変数の扱い、条件分岐、繰り返し、一次元配列、いくつかのメソッドの使い方が把握できていれば、それほど苦労せずに正答を出せる問題でした。
まずは、Paizaの独自システム(?)である「標準入力」に慣れるために、「標準入力セット」から取りかかります。「標準入力セット」は、JavaScript編、Ruby編があるので、両方の言語について解答を済ませます。
「標準入力セット」が終わったら、「レベルアップ問題集」内のDランクの問題を片っ端から解いていきます。
「Dランク早解きセット Ruby編」が全部終わったところです。分子が分母より大きくなっているのは、 別解でも動くことを確認するためにコードを再提出したことによります。
JavaScript、Rubyのどちらでもコードを書けるように、JavaScript編、Ruby編があるものについては、両言語とも解答しています。
スキルチェックでDランクをゲット
「レベルアップ問題集」内のDランクの演習問題が全て片付いたので、今度はスキルチェック問題のDランクにチャレンジします。
スキルチェックは、ユーザーのプログラミング能力をPaiza基準で測定するコンテンツです。それもあって、個々のスキルチェック問題の内容を公開したり、他者に話したりすることが規約で禁じられています。
手始めに適当に選択した「D033:頭文字」を解答。「レベルアップ問題集」のDランク演習問題を済ませていたこともあり、それほど苦戦せずにクリア。これによって、Dランクをゲットできました。
スキルチェックは、そのランクのいずれか1つの問題をクリア(基準点以上を出す)できれば、そのランクに上がれるようです。
スキルチェックDランク問題を全部終わらせる。
スキルチェックDランクをゲットできたので、次はCランクと行きたいですが、いきなりCランクのスキルチェックに挑むのはさすがに無謀すぎる。
「スキルチェック入門編」講座のCランク編を見た感じですが、そこそこ複雑なアルゴリズムも要求されてくるようです。さらに一次配列より先(連想配列、2次元配列、関数の定義など)が全く手付かずになっていることもあります。
これもあって、まずはDランクまでの範囲をガッチリ固めることが先かなということで、残りのDランクのスキルチェック問題も解答していきます。
スキルチェックは制限時間があるので、JavascriptよりもRubyでの解答が多くなりました。Rubyには、配列内の特定の要素を数える.countメソッド、配列内の数値要素の合計を求める.sumメソッドなど、Javascriptには無い便利なメソッドが数多く揃ってます。
これらのメソッドを使うことで解答の難易度が大きく下がり、時間短縮にもつながります。特定の処理をするメソッドを使いこなせない、もしくは、実装されていない言語を選択した場合は、その特定の処理を自力で書く必要があり、それによって難易度が高くなり、時間も要してしまう。
数日間かけて、現時点(2019/11/13時点)で出ているDランクのスキルチェック問題を全て終わらせました。いくつかギリギリで通過(テストケースでNGが出た)があったものの、現在出ているDランク134問全部を本番でクリアできました。
Dランクの演習はこれでひとまず完了。次はCランク取得を目指します。手始めに連想配列、2次元配列、関数の定義ができるようになることかな?