LoginSignup
1
2

More than 1 year has passed since last update.

【yukicoder解説】〜Python3で「No.289 数字を全て足そう」を解いてみた〜

Last updated at Posted at 2021-05-31

目次

  1. はじめに
  2. 問題URL
  3. 考え方
  4. 提出コード
  5. コード解説
  6. おわりに

質問・指摘などがありましたらコメントかTwitterまでお願いします。

はじめに

yukicoderで簡単な問題として掲載されていたNo.289を解きました。Python3の解説が見当たらなかったので、私の解答を参考までに書いておきます。

問題URL

No.289 数字を全て足そう - yukicoder

考え方

半角英数字のみからなる文字列が与えられます。この中から数字を抽出し、総和を求めればよいです。

文字列メソッドの利用

Pythonでは文字列(str)がどんなものであるか判定するためのメソッドが用意されています。判定できるのは英字、英数字、ASCII文字、空文字列などです。

組み込み型 — Python 3.9.4 ドキュメント

今回は十進数字かどうか判別するstr.isdecimal()を用いて解きました。

s_1 = "0123"
s_2 = "abcd"
print(s_1.isdecimal())
# True
print(s_2.isdecimal())
# False

このように、str.isdecimal()True もしくは False を返します。

提出コード

289.py
S = list(str(input().rstrip())) #rstrip()で改行コード除去
res = 0 #数字がない場合は0を出力
for i in range(len(S)):
    TF = S[i].isdecimal()
    if TF:
        res += int(S[i])
    else:
        pass

print(res)

実行時間は20ms、使用メモリは7956KBでACでした。

コード解説

まず与えられた文字列を1文字ずつ分割し、str型でリストに格納します。出力の初期値を0とした後、for文とif文を用いて、1文字ずつ数字かどうかの判定を行ないます。数字だった場合には、int型に変換し、出力に加算します。これを文字列の長さ分繰り返し、最後に出力します。

おわりに

Pythonは標準ライブラリが充実しているだけでなく、組み込み関数やメソッドも充実しているので、競技プログラミング等で軽い処理をする際にはとても実装しやすい言語だと思います。
yukicoderではAtCoderとは違う傾向の問題が多く出題されているので、解きながら勉強になるものが多いと感じています。


この記事で用いたコードを含め、yukicoderやAtCoderに提出したコードは、Githubにアップロードしています。気になる方はこちらからどうぞ↓
for_yukicoder — Github/PyRadiolarus

1
2
4

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
2