この記事では、paizaのプログラミングスキルチェックで
高得点を取るための攻略法を
点数が伸びない原因別にご紹介します!
ご紹介する原因は以下の3つです。
- 正解率が低い
- 制限時間が足りない
- ランタイムエラーが出る
当てはまる方は、ぜひご参考ください!
ランク別の攻略法は
こちらで詳しく紹介していますので、ご参考ください!
またランク別のレベルアップ問題集の解答と解説も
紹介しているのでぜひご参考ください!
『出力結果が間違っています』と出て正解率が伸びない
まずは「出力結果が間違っていますと出て正解率が伸びない」です。
最低でも9割以上の正解率が必要
スキルチェックでは
10種類のテストケースの入力に対する正解率が
点数に大きく影響します。
またランクアップには最低でも9割以上正解しなければなりません。
そのため、まず全パターンに正解することを目指しましょう。
評価基準は、こちらで詳しく紹介しているので
ぜひご参考ください!
提出前に複数の入力で確認する(paiza.IOがおすすめ!)
ではどのようにして正解率を上げればいいでしょうか。
スキルチェックでは提出前に
用意された2〜3つの入力例を試すことができます。
提出する前に必ずこの入力例だけは確認しましょう!
タブで選択して実行するだけなので時間ロスもほとんどありません。
その上で、さらに違う入力例で確認することをおすすめします!

プログラミングもケアレスミスを無くすのが大切なんだね!
自分のパソコンでプログラムを動かせる方は、
普段使っているエディターにコードをコピペして
確認して頂ければいいと思います。
自分のパソコンで動かせない方は、paiza.IOを使えばブラウザ上で
全て行うことができるので、使ってみてください!
制限時間が足りず高得点が取れない
次は「制限時間が足りず高得点が取れない」もしくは
「間に合うが時間を使いすぎてしまい高得点が取れない」についてです。
制限時間の半分以内を目指す

paizaのスキルチェックでは制限時間の3分の1以降に提出すると
経過時間が長いほど減点されていきます。
そのため、まずは制限時間の半分以内には解けるように意識しましょう!
回答時間と点数の関係については
こちらで詳しく解説しているので、ご参考ください!
途中確認を欠かさない

では「時間をかけずに解く方法」について説明していきます!
Bランク以降の問題ではコードがとても複雑になっていきます。
複雑な処理のコードを書く際には
途中の処理の結果を出力させて、確認しながら進めましょう。
最後までコードを書いた後
「何も出力されない・・・」
「結果が明らかにおかしい・・・」
となると、間違っている部分を一から探す事態に陥ってしまいます。
面倒かもしれませんが、必ず途中確認は行いましょう。

僕は、for文とif文を使うときは必ず確認することにしよう!
コードにコメントを書く
途中確認や最終確認の時に
自分の書いたコードの意味が、わからなくなる方もいらっしゃると思います。
そんな方は、コードにコメントを書くのがおすすめです!
コメントとは、以下のような処理と関係の無い説明文のことです。
fluits = {"りんご":100, "ぶどう":150, "もも":200}
# 各フルーツ名と値段を表示する ←ここがコメント
for k, v in fruits.items():
print(k+"は"+str(v)+"円")
コメントをがあると見直しがとても簡単になります。
はじめは少し手間に感じるかもしれませんが
見直しで時間を費やすことに比べると微々たるものなので
自分でわかるようにコメントは残しておきましょう。
ランタイムエラー(runtime error)が出てクリアできない
最後に「ランタイムエラーが出てクリアできない」場合です。
【処理速度】計算の順序を意識する
これは無駄な処理が含まれており
処理に時間がかかっていることが原因です!
スキルチェックでは、例え正しい答えが出ていたとしても
その処理に無駄が多く時間がかかってしまうと
正解にしてもらえません。

無駄があるとか言われてもよくわからないよ・・・
以下で無駄のある処理と無い処理について
例を出して説明していきます!
処理に無駄がある例

例えば
「商品が税抜価格で表示されており、最後に税込の合計金額を表示する」
通販サイトがあったとします。
- 商品の税別価格を読み込む
- 税別価格に消費税率をかけて税込価格を計算する
- 同様の計算を各商品に対して行う
- 各商品の税込価格を合計する
プログラムは以下のように書けます。
# 商品と値段
item_dic = {10000:"机", 4000:"椅子", 15000:"棚"}
# 税率
tax = 1.1
# 合計金額を計算
total_price = 0
for v, k in item_dic.items():
# 税込みを計算して合計金額に加える
total_price += v * tax
print(int(total_price))
しかし、この計算では2.の「消費税率をかける」という処理を
購入する商品の数と同じ回数だけ行う必要があります。
ではどうすればいいでしょうか。
処理に無駄がない例
上記の処理の無駄を無くすために
- 商品の税別価格を読み込む
- 各商品の税別価格を合計し、税別合計金額を計算する
- 税別合計金額に消費税率をかけて、税込合計金額を計算する
という処理に変更しましょう。
プログラムは以下のように書き換えられます。
# 商品と値段
item_dic = {10000:"机", 4000:"椅子", 15000:"棚"}
# 税率
tax = 1.08
# 合計金額を計算
total_price = 0
for v, k in item_dic.items():
total_price += v
total_price *= tax # 合計金額に税率をかける
print(int(total_price))
コードが1行増えてしまいましたが
「消費税率をかける」の数を1回に減らすことができました!
上記では掛け算の回数を例としましたが
処理速度に大きな影響を与えます!

特にfor文の中の処理には気をつけた方が良さそう!
「ランタイムエラーが出てクリアできない」という方は
一度コードを見直し、無駄な処理が含まれていないか確認してみましょう!
またif文とfor文についてはこちらをご参考ください!
まとめ
この記事では、paizaのスキルチェックで高得点を取る方法について
- 正答率が原因の場合
- 回答時間が原因の場合
- 処理速度が原因の場合
という流れで紹介しました。
高ランクの問題では解くために時間もかかるため
頭も体も疲れると思います。
あまり無理をせず休憩を取りながら、着実にランクアップを目指しましょう。
この記事を読んでランクアップできた方が一人でも増えれば幸いです。
またpaizaについては
こちらでも紹介していますので、ぜひご参考ください!