AtCoderで茶色を目指す 13日目

8:00起床。前日は夜更かししてました。2日後はコンテストなので、気を引き締め直して、頑張ろうと思います。

本日の目標

本日でチュートリアルは終わります。多分。。。

今までも、〇〇を終わらせる!と意気込んでいたけど、そんなに実現させてないので、目標設定の方法を変えようかな。

備忘録

エラー:TypeError: unsupported operand type(s) for -: 'list' and 'int'

次の問題を解いているときに、吐いたエラーについてです。

atcoder.jp

問題を解く途中に自分が作ったコードです。

n, x = map(int, input().split())
a = list(map(int, input().split()))
A = sum(a[::2]-1)+sum(a[1::2])
print(A)

このコードで実行したところでエラーが出ました。

原因

エラーの文章を読むと、問題となっているのは上から3行目の部分でした。エラーを見る限り、タイプエラーなのでsum関数の使い方が間違っていると思われます。

docs.python.org

公式のドキュメントあるsum関数の使い方です。

sum(iterable/start=0)

iterableの要素の合計を出すみたいなことが書かれてました。

iterableってなんだ??

python.ms

こちらのサイトを参考にしました。「いてらぶる」って読むんですね。。。
個人的、簡潔的にまとめると、「イテラブルは繰り返し処理で使えるように、複数の値を持ったもの」です。

元の問題に戻ります。問題となるコードには、定数-1が含まれています。これが原因だと思われます。

解決

実現したいことは、リスト型aにおいて偶数番目の値は-1し、その時のaの合計値を出すことです。なので、与えられたn個の商品のうちn//2個が-1になると言うことです。

A = sum(a)-n//2

これで、求めたい値を出すことができました。

反省

目標までいくことができませんでした。しかし、問題量を多くこなせてよかったです。

コンテスト頑張ります!

参考サイト

B - Can you buy them all?

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

Python のイテラブル, iterable ってなに? | 民主主義に乾杯