#Pythonで競技プロを練習する
現在競技プログラミングを通じで自分でアルゴリズムを考える練習をしています。
某競プロの初心者用の問題ですが自力で考えてうまくいきましたので同じ初心者の方には参考になればと思いました。
問題としては単純でマスが3つあってそれぞれのマスに0か1が入ります。そして1が入ったマスをカウントするという問題です。
アルゴリズムを考える
この問題を解くときに自分なりに考えたアルゴリズムが以下になります。
- マスが3つあってその中に1か0がはいる
- 1マスにつき1か0が入るのかを3回繰り返している
- if文で1が入っていたらカウントを1増やすようにすればいい
- カウントを入れる変数countを作ってあげる
- 入力が手入力になるので、入力した値をリストで受け取ればいいと思った
以上がとりあえず思い付いたアルゴリズムになる
コード
Python
s1,s2,s3 = list(map(int, input())) #入力した値をリスト型[]で受け取るイメージ
t = s1, s2, s3 #[1,0,1]こんなイメージ
count = 0 #カウントが増えた時にその値を保存するための変数
for i in t: #for i in [1,0,1]があってiのなかに1, 0, 1が順番に入るイメージ
if i == 1: #if文でiが1ならば、カウントを1増やす
count += 1
else: #ここは思いつきですが、0が入ればとりあえず何もしなくていいと思って,else:0としてみた
0
print(count) #最後にprint(count)とすることでcountの中身を出力してあげる
以上のコードで合格をもらえたのでよしとした。
別解
Python
print(input().count('1')) #入力した値をcount関数で直接数える凄まじく効率にいい解答です
#感想
別解で効率のいいコードはありますが、今回は自分で思った通りにアルゴリズムを作って、思った通りのコードを記述することができたので、競プロを初めて一週間ちょっとですが、初めて競プロを始めた時よりは進歩しているのでなはないかと思いました。
まだまだ、効率のいいコードの書き方などはできませんが、少しづつ進歩できればいいと思いました。