1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#Pythonで競技プロを練習する

現在競技プログラミングを通じで自分でアルゴリズムを考える練習をしています。
某競プロの初心者用の問題ですが自力で考えてうまくいきましたので同じ初心者の方には参考になればと思いました。

問題としては単純でマスが3つあってそれぞれのマスに0か1が入ります。そして1が入ったマスをカウントするという問題です。

アルゴリズムを考える
この問題を解くときに自分なりに考えたアルゴリズムが以下になります。

  1. マスが3つあってその中に1か0がはいる
  2. 1マスにつき1か0が入るのかを3回繰り返している
  3. if文で1が入っていたらカウントを1増やすようにすればいい
  4. カウントを入れる変数countを作ってあげる
  5. 入力が手入力になるので、入力した値をリストで受け取ればいいと思った

以上がとりあえず思い付いたアルゴリズムになる

コード

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関数で直接数える凄まじく効率にいい解答です

#感想

別解で効率のいいコードはありますが、今回は自分で思った通りにアルゴリズムを作って、思った通りのコードを記述することができたので、競プロを初めて一週間ちょっとですが、初めて競プロを始めた時よりは進歩しているのでなはないかと思いました。
まだまだ、効率のいいコードの書き方などはできませんが、少しづつ進歩できればいいと思いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?