この記事では
プログラミング学習サービスpaizaラーニングの
スキルチェックレベルアップ問題集をわかりやすく解説します!
プログラミング言語はpythonです。
今回はCランク相当の以下の問題について解説します。
他のレベルアップ問題集の解答と解説も紹介しているので
ぜひご参考ください!
またpaizaの各ランクの攻略法は
こちらで詳しく紹介しているので、ぜひご参考ください!
宝くじ(paizaランク C 相当)の解答と解説
今回の問題は「 宝くじ(paizaランク C 相当)」です。
問題はこちらからご確認ください。
この問題を解くのに必要な知識は7つです。
- 入力を受け取る
- str型からint型に変換
- 改行区切りの入力を受け取る
- リストに要素を追加
- 同じ数値かで条件を課す
- 前後の値の数値かで条件を課す
- 下何桁が一致するかで条件を課す
この記事では、上記の7つの中で
- 同じ数値かで条件を課す
- 前後の値の数値かで条件を課す
- 下何桁が一致するかで条件を課す
の3つについて、それぞれ詳しく解説します。
残りの
については、以下の記事をご参考ください!
同じ数値かどうかで条件を課す
まずは「同じ数値かどうかで条件を課す」です。
この問題では、当選番号と宝くじの枚数が入力され
その後に改行区切りで宝くじの番号が入力されます。
そのため変数とリストを使って、入力を受け取ります。
# 当選番号の入力を受け取る
win_num = int(input())
# 宝くじの枚数の入力を受け取る
num = int(input())
# 宝くじの番号を受け取るリスト
lotteries = []
# 宝くじの番号の入力を受け取り、リストに格納
for _ in range(num):
lotteries.append(int(input()))
for文については、こちらをご参考ください!
次に、各宝くじの番号に対して何等に当選したかの条件を課します。
まずは1等か判定するためにif文を使って
「同じ数値かどうか」で条件を課して、同じ場合はfirst
と出力します。
# 各宝くじの番号に条件を課す
for lot_num in lotteries:
# 当選番号と同じ場合
if lot_num == win_num:
print('first')
if文については、こちらをご参考ください!
前後の値の数値かで条件を課す
次は「前後の値の数値かで条件を課す」です。
前後賞かを判定するために当選番号から±1
を計算し
「前後の値の数値か」で条件を課します。
# 前後の値の数値かの条件
win_num - 1 <= lot_num <= win_num + 1
そして、前後賞の場合はadjacent
と出力します。
# 前後の値の数値の場合
elif win_num-1 <= lot_num <= win_num + 1:
print('adjacent')
足し算や引き算については、こちらをご参考ください!
下何桁が一致するかで条件を課す
最後は「下何桁が一致するかで条件を課す」です。
2等または3等か判定するために
「下何桁が一致するか」で条件を課さなければなりません。
そのために当選番号と宝くじの番号を文字列に変換し
スライスすることで「同じ文字列かどうか」で条件を課します。
(文字列)[最初の文字の位置:最後の文字の位置]
# 下4桁が一致するかの条件
str(lot_num)[2:] == str(win_num)[2:]
# 下3桁が一致するかの条件
str(lot_num)[3:] == str(win_num)[3:]
そして2等の場合は下4桁が一致でsecond
と出力
3等の場合は下3桁が一致でthird
と出力します。
# 下4桁が一致する場合
elif str(lot_num)[2:] == str(win_num)[2:]:
print('second')
# 下3桁が一致する場合
elif str(lot_num)[3:] == str(win_num)[3:]:
print('third')
最後に外れの場合は、blank
と出力します。
# 下4桁が一致する場合
elif str(lot_num)[2:] == str(win_num)[2:]:
print('second')
# 下3桁が一致する場合
elif str(lot_num)[3:] == str(win_num)[3:]:
print('third')
# 外れの場合
else:
print('blank')
if文については、こちらをご参考ください!
宝くじ(paizaランク C 相当)の解答
まとめると「宝くじ(paizaランク C 相当)」の解答は以下です。
# 当選番号の入力を受け取る
win_num = int(input())
# 宝くじの枚数の入力を受け取る
num = int(input())
# 宝くじの番号を受け取るリスト
lotteries = []
# 宝くじの番号の入力を受け取り、リストに格納
for _ in range(num):
lotteries.append(int(input()))
# 各宝くじの番号に条件を課す
for lot_num in lotteries:
# 当選番号と同じ場合
if lot_num == win_num:
print('first')
# 前後の値の数値の場合
elif win_num-1 <= lot_num <= win_num+1:
print('adjacent')
# 下4桁が一致する場合
elif str(lot_num)[2:] == str(win_num)[2:]:
print('second')
# 下3桁が一致する場合
elif str(lot_num)[3:] == str(win_num)[3:]:
print('third')
# 外れの場合
else:
print('blank')
この問題では、「for文とif文の組み合わせ」が必要になりました。
しかしここまで解説したように、処理を分割しそれぞれを一つ一つ見ていくと
基本通りの内容で特に難しいものは無かったかと思います。
ぜひ他の問題も処理の流れをイメージし
そして分割した上で問題に取り組んでいきましょう!
まとめ
今回はpaizaのスキルチェック過去問題の中で
- 宝くじ(paizaランク C 相当)
の解答と解説を紹介しました。
Dランクの問題に比べて、コードが複雑になります。
そのためコードを書き始める前に
頭の中で処理の流れをイメージをしてから書いていくのがおすすめです!
また他のレベルアップ問題集の問題についての解説も、ぜひご参考ください!