ゆうは

わかりたいことをすべて、そして深堀り

AtCoderのABC356の振り返り

6月1日(土)のAtCoderのABC356の振り返りです。

AtCoderは毎週取り組むようにしています。けど、AtCoderのための時間をとって勉強できていません。今は継続することだけを目標にしてにしています。最近、「またちゃんと勉強したい!」と積極的な考えになってきているので、継続するだけでも大事だなと思って取り組んでいます。

ABC356

AとB問題の2問だけしかできませんでした。
C問題にも取り掛かったのですが、体力がなくなってしまってリタイアしました。

atcoder.jp

ABC356A - Subsegment Reverse

リストの中の一部を逆順にするというものでした。
リストの一部を逆順にする方法はわかったのですが、それをどう戻したらいいのかがすぐにわからずに試行錯誤しました。単純にそのまま戻すので正解でした。

N, L, R = map(int, input().split())
A = []
for i in range(1, N+1):
    A.append(i)

rev = A[L-1:R]
rev.reverse()

A[L-1:R] = rev

print(*A)

A - Subsegment Reverse

ABC356B - Nutrients

下のコードで正解だったのですが、後で見て自分でもよくわからない状態です。
なんとなく「こういう感じかな?」と雰囲気でやってしまった感じなのでしっかり理解したいなと思います。

複数の配列の要素同士を足す方法がわからず調べてzipを使いました。この方法は使えるようになっておかないといけないです。毎回調べている気がします。最後にA配列と比較しました。

N, M = map(int, input().split())
A = list(map(int, input().split()))

X = []
for i in range(N):
    X.append(list(map(int, input().split())))

total = [0]*M
for i in range(len(X)):
    total = [a+b for a, b in zip(total, X[i])]

judge = True
i = 0
while i < M:
    if A[i] > total[i]:
        judge = False
        break
    i += 1

if judge:
    print('Yes')
else:
    print('No')

B - Nutrients

まだまだPythonの基本的なことがわかっていないので、今回のことくらいは調べずにできるようになりたいです。