😊
python:各桁の和
pythonを独学で初めて2ヵ月。
アウトプットとしてpaizaのスキルチェックとAtCorderを今月から開始。
paizaはAがタイムオーバーor問題の意味がちんぷんかんぷんで足踏み状態。
さらなる先に進むために基本的なアルゴリズムの勉強開始。
業務でアルゴリズム実装の必要性をあまり感じたことないが、知らないよりは知ってたほうが色々よかろうということで。(そもそも業務プログラムで自作アルゴリズムを作成することなかったような。。)
車輪の再発明と卑下しても、「実装できてもあえて実装しない」のと「実装さえできない」との差は天と地との差があるかも??
本日はAtCorderの
にチャレンジ。
ググらずに持てる知識で解いたソースが下記。
競技用プログラミングって有名なアルゴリズムを知ってるか知ってないかで解き方全然違うのね。。。
def sum_digit(n):
return sum(list([int(i) for i in str(n)]))
n,a,b=[int(i) for i in input().split()]
ans=[]
for i in range(1,n+1):
vsum=sum_digit(i)
if(a<=vsum and vsum<=b):
ans.append(i)
print(sum(ans))
ググると全く違う解法があった。
0になるまで10で割った余りを足せばよいとのこと。。。
自分の解法もそれはそれでありかとは思うのだけど大量データとかじゃ劣るのだろうか。。。
Discussion