はじめに
この記事では、paiza×Qiitaの記事投稿キャンペーンの一環として、筆者が初めてpaiza Dランク問題を解いた頃(2021年4月)を振り返り、自分なりのプログラミング学習方法についてまとめます。
筆者がプログラミングに興味を持つきっかけとなったのはpaizaであり、その3ヶ月後(2021年6月)にQiitaの執筆を始め、色々と試行錯誤していた記憶があります。そのため、本記事は paizaとQiitaを通じて初めてプログラミングに挑戦した経験(paiza×Qiita×経験談) を元にしています。
この記事は、Dランクではじめてpaizaのプログラミング問題を解こうとしている方を対象としています。
解答例
まずは、Dランク問題の解答例を紹介します。言語はPython 3を使用します。
N倍の文字列
n = int(input())
print("*" * n)
Eメールアドレス
local = input()
domain = input()
email_address = f"{local}@{domain}"
print(email_address)
足し算
ab_map = map(int, input().split())
ab_sum = sum(ab_map)
print(ab_sum)
一番小さい値
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
文字の一致
moji_a = input()
moji_b = input()
if moji_a == moji_b:
print("OK")
else:
print("NG")
学習方法
ここでは、個人的に思うpaizaを活用したプログラミング学習方法を紹介します。
別解を用いた学習
プログラミング問題の解法は一通りではありません。入力と出力さえ合っていれば、その間は自由にコーディングできます。paizaでは一度解いた問題を何度でもチャレンジできるので、自分なりの解法を考えると楽しく学べます。
例えば、以下のコードは一番小さい値を求めるものです。
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
これを別の方法で実装することもできます。
n_min = float("inf")
for _ in range(5):
n_i = int(input())
if n_i < n_min:
n_min = n_i
print(n_min)
このように別解を考えることで、if文の使い方やPythonの最大値の表記方法などを学ぶことができます。問題に合わせた最適な解法を模索することも学習の一環です。
汎用化を求めた学習
paizaの問題では、入力条件が与えられ、その条件を満たすようにコーディングします。Dランクでは限定的な値の範囲が多いですが、Cランク以上になると汎用性が求められます。
以下は、足し算の問題を汎用的にコーディングした例です。
ab_map = map(int, input().split())
ab_sum = sum(ab_map)
print(ab_sum)
一方、以下は汎用性を意識しないコードです。
a, b = map(int, input().split())
print(a + b)
汎用性を意識したコードは、任意の入力に対応できるため、より幅広いシーンで活用できます。
paizaを通して、このような汎用化について学ぶことができます。
美しさを追求した学習
美しさを意識したコーディングも重要です。最初は難しいかもしれませんが、PEP8を参考にすることで、可読性の高いコードを書けるようになります。(PEP8についてはPEP8について簡単にまとめてみた!も参考になります。)
例えば、一番小さい値のコードを見てみます。
n_list = [int(input()) for _ in range(5)]
n_min = min(n_list)
print(n_min)
このコードでは、_
を使用しています。_
は使用しない変数を明示的に示す際に使う慣習があります。最初は知らないことも多いかもしれませんが、調べたり、実際にコードを書いていく中で自然に身についていきます。
実際、筆者もpaiza学習3ヶ月頃にQiitaで記事を投稿した際、コメントで_
の使い方を教えていただいた経験があります。
このようにpaiza×Qiitaの組み合わせは、プログラミング学習の場として最適だと思います。
まとめ
この記事では、筆者の初めてのpaiza Dランク問題への取り組みと、プログラミング学習の方法について紹介しました。別解を考えること、汎用性を意識すること、コードの美しさを追求することが、学習をより深めるポイントだと思います。paizaとQiitaの組み合わせを活用し、楽しく効果的にプログラミングスキルを向上させましょう。