見出し画像

全事象について考える

本日は、競技プログラミングを学習していく上で、

「この考え方大事だな」と思ったことについて記事にしていきたいと思います。

皆さんの学習の助けになったら、幸いです。

本日のトピック

AtCoder Beginner 208 のA問題

A問題

A - Rolling Dice

画像1

ふむふむ

サイコロを1回振ったときに、出せる数字の最大値は6
サイコロを2回振ったときに、出せる数字の最大値は12
サイコロをA回振ったときに、出せる数字の最大値はA*6

よってコードは
「Aを6倍した値が、Bよりも大きかったら、"Yes", それ以外は、"No"」だと思い、下記コード

A, B = map(int, input().split())
deme = A*6
if deme >= b:
   print("Yes")
else:
   print("No")

がしかし、結果は、【WA】(間違っているよ)

「なぜだ!!」

絶対コードは合っているし、サンプルデータもちゃんと出力できているのに!

哀川はパニック!

全事象について考えましょう

こーゆー時は、紙に全通り書き出すことに限る。

サイコロを1回振る時の全通り

[1,2,3,4,5,6]

サイコロを2回振る時の全通り

[2,3,4,5,6,7,8,9,10,11,12]

「あ」

よく考えたら、サイコロを2回振る時、Bの値は、2以上じゃないとだめ。

つまり
A回振る時の出目をBとすると「BはAよりも大きい値」にならないとだめ

なので、コードは

A, B = map(int, input().split())
deme = A*6
if deme < b:
   print("No")

elif A > b:
   print("No")

else:
   print("Yes")

これで、無事 【AC】(問題ないよ)

気づけてよかった・・・・・

今回の反省と次回までの目標

A問題に20分近くかかってしまった・・・

今回はC問題まで正答できたから、かなり悔しい。

次回の目標は、60分以内にC問題まで完答!



この記事が気に入ったらサポートをしてみませんか?