この記事では
プログラミング学習サービスpaizaラーニングの
スキルチェックレベルアップ問題集をわかりやすく解説します!
プログラミング言語はpythonです。
今回はDランク相当の以下の問題を解説します。
他のレベルアップ問題集の解答と解説も紹介しているので
ぜひご参考ください!
またpaizaの各ランクの攻略法は
こちらで詳しく紹介しているので、ぜひご参考ください!
閏年の判定 (paizaランク D 相当)の解答と解説
今回の問題は「閏年の判定 (paizaランク D 相当)」です。
問題はこちらからご確認ください。
この問題を解くのに必要な知識は5つです。
- 入力を受け取る
- str型からint型に変換
- 割り切れるかで条件を課す
- うるう年か判定
- 結果を出力
それぞれ詳しく解説します。
入力を受け取る
まずは「入力を受け取る」です。
今回の問題では1行目に入力される西暦を使って閏年か判定します。
そのためまずは1行目の入力を受け取る方法について解説します。
pythonではinput関数を使って、入力を受け取ります。
# 西暦の入力を受け取る
year = input()
入力の方法については、こちらをご参考ください!
str型からint型に変換
次は「str型からint型に変換」です。
input関数で受け取った入力値は
例え数字であってもstr型として変数に代入されます。
以降の処理がstr型では実行できないので
int関数を使って、str型からint型に変換しなければなりません。
# 西暦の入力を受け取る
year = input()
また入力の際にint型に変換すると、変数の数が増えないためシンプルです。
# 1行目の入力を受け取りint型に変換
year = int(input())
変数の型については、こちらをご参考ください!
割り切れるかで条件を課す
次は「割り切れるかで条件を課す」です。
数値が特定の値で割り切れるかどうかを知るには
%
を使って割り算の余りが0
になるかどうかを計算します。
# 入力される西暦を受取り、int型に変換
year = int(input())
# 余りを計算
result = year % 400
割り算などの四則演算については、こちらをご参考ください!
うるう年か判定
次は「うるう年が判定」です。
うるう年か判定するには
3つの条件を課して条件分岐をしなければなりません。
- 400で割り切れるか
- 100で割り切れないか
- 4で割り切れるか
2つ以上の条件での条件分岐ではif elif else文を使用します。
ここで大切なのが条件を課す順番です。
複数の条件分岐を課す時は
先に「限定的な(狭い)条件」から課すようにしましょう。
今回の問題だと
最も限定的なのが「400
で割り切れるか」
その次に「100
で割り切れないか」
最後が「4
で割り切れるか」です。
# 400で割り切れる場合
if year % 400 == 0:
# 100で割り切れる場合
elif year % 100 == 0:
# 4で割り切れる場合
elif year % 4 == 0:
# 上記以外の場合
else:
なぜ「限定的な条件」を先にするのでしょうか?
例えば、「100
で割り切れないかどうか」の条件を
最初に課した場合を考えます。
# 100で割り切れる場合
if year % 100 == 0:
# 400で割り切れる場合
elif year % 400 == 0:
# 4で割り切れる場合
elif year % 4 == 0:
else:
この場合、「100
で割り切れる」には当然
「400
で割り切れる」も含まれてしまい
800
などの400
の倍数が平年と判定されてしまいます。
そのため必ず「限定的な条件」から課すようにしましょう。
if文については、こちらをご参考ください!
結果を出力
最後は「結果を出力」です。
閏年か判定した結果をprint関数を使って出力します。
# 400で割り切れる場合
if year % 400 == 0:
# Yesと出力
print('Yes')
# 100で割り切れる場合
elif year % 100 == 0:
# Noと出力
print('No')
# 4で割り切れる場合
elif year % 4 == 0:
# Yesと出力
print('Yes')
# 上記以外の場合
else:
# Noと出力
print('No')
出力については、こちらをご参考ください!
閏年の判定 (paizaランク D 相当)の解答
全てまとめると「閏年の判定 (paizaランク D 相当)」の解答は以下です。
''' 入力される西暦を受取りint型に変換する '''
year = int(input())
if year % 400 == 0: # 400で割り切れる場合
print("Yes")
elif year % 100 == 0: # 100で割り切れる場合
print("No")
elif year % 4 == 0: # 4で割り切れる場合
print("Yes")
else:
print("No")
この問題はDランク相当ですが
複数の条件分岐が必要な少し難易度の高い問題です。
このような少し複雑な問題を解く時は
コードを書く前にまず処理の流れをイメージするのがおすすめです。
ぜひご参考ください!
まとめ
今回はpaizaのスキルチェックのレベルアップ問題集の中で
- 日付セット:閏年の判定 (paizaランク D 相当)
の解答と解説を紹介しました。
Dランクの問題のため、非常に簡単ではありますが
高ランクの問題で必要になる知識が豊富に含まれています。
しっかりと理解しランクアップを目指していきましょう!
また他の問題についての解説も、ぜひご参考ください!