見出し画像

paizaのスキルチェックのCランクの問題を全て解いてみて

paizaのCランクの問題も全て解き終えた。
今回は、paizaのCランクの問題を解いて感じたことに絞って記載していこうと思う。

paizaのスキルチェックに果敢に挑んでいる背景はこちら↓

■感じたこと

実務やプログラムを書いて何かを実行する上での最低限のコーディングを経験できる教材だと感じた。
Cランクを全て解くことができれば、その言語のコーダーとして実務はできるのではないか思った。と、駆け出しエンジニアの私が勝手に言っている。(但しフレームワーク特有の表現は、スキルチェックでは経験できないので、そこは適宜キャッチアップする必要がある。)

Cランクのいずれの問題も解答想定時間は大体20分程度で、問題で求められる仕様も、Dランクとは異なり複数の要素を満たす必要があるがそれほど複雑ではない
しかし、Dランクと違うのは、

・入力された値を分かりやすい名前の変数としてまとめる
・当たり前のように反復処置を使う
・扱っているインスタンスのクラスを意識しながら処理を書く

これらのことは求められている気がする。

上記の「分かりやすい名前の変数としてまとめる」と「反復処理を使う」について、例を出しながら簡単にまとめる。
多少大袈裟かもしれないが、Dランクだと「ある数字2つが入力されるのでそれらを足して出力してください。」みたいな形式の問題がほとんとである。

// PHP
$a = intval(trim(fgets(STDIN)));
$b = intval(trim(fgets(STDIN)));

echo ($a + $b);

のように、適当な変数名で、かつ入力される数字の数も「2つ」と指定されているので、こんな書き方で解答できる。

一方Cランクでは「全部の数字の数と、それぞれの数字が入力されるので、それらを全て足して出力してください。」みたいな感じに変わると思ってもらえると良いと思う。

// PHP
$totalNumbersCount = intval(trim(fgets(STDIN)));

$sum = 0;
for ($i = 0; $i < $totalNumbersCount; $i++) {
   $number = intval(trim(fgets(STDIN)));
   $sum += $number;
}

echo $sum;

これはあくまで例なので、もう少し問題は難しいと思うがざっくりこのくらいの差はあると思う。
自分が何を意図して処理を書いていて、その過程の変数が何なのか分かりやすく表現しておかないと解答は難しいかもしれない

最後に、「インスタンスのクラスを意識しながら処理を書く」ことについて簡単にまとめる。
・この変数に含まれているものがstringなのかintegerなのか
・stringをarrayに突っ込もう
みたいなことは、Dランクよりは間違いなく考えることになる。
arrayでその処理できないよ、integerでその処理できないよ、みたいにエラーで怒られることが多々ある。
今扱っているインスタンスのクラスが何か、適宜確認しながらコードを書き進めていけると良いと思う。

■余談

Cランクの問題でも、難易度が2000前後の問題がある。
これロジックは分かるけど20分で全て書き切れるの?みたいに思いながら解いていた。世の中にはもっと簡潔に書けるすごい人たちがいるんだろうなーと想像した。
これからも自分のできることからコツコツ頑張ろうと思った。

Dランクの問題を全て解き終えた感想についてはこちら↓

おしまい。

この記事が気に入ったらサポートをしてみませんか?