長期投資シミュレーションツール『Tousimu』をリリースしました!

【解答付き】paizaのスキルチェック過去問題「宝くじ(Cランク)」を解説!

プログラミング
スポンサーリンク

この記事では

プログラミング学習サービスpaizaラーニング

スキルチェックレベルアップ問題集をわかりやすく解説します!

プログラミング言語はpythonです。

今回はCランク相当の以下の問題について解説します。

他のレベルアップ問題集の解答と解説も紹介しているので

ぜひご参考ください!

またpaizaの各ランクの攻略法は

こちらで詳しく紹介しているので、ぜひご参考ください!

スポンサーリンク

宝くじ(paizaランク C 相当)の解答と解説

今回の問題は「 宝くじ(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 相当)

の解答と解説を紹介しました。

Cランクの問題からは必ずif文またはfor文が登場し

Dランクの問題に比べて、コードが複雑になります。

そのためコードを書き始める前に

頭の中で処理の流れをイメージをしてから書いていくのがおすすめです!

また他のレベルアップ問題集の問題についての解説も、ぜひご参考ください!

タイトルとURLをコピーしました