脱公務員からのデータサイエンティストの道

公務員、データサイエンス、勉強、書籍等についてのブログ

AtCoder Beginner Contest 220

はい、モチロウです・・・・。

 

今回もAtCoderの定期コンテストに参加したわけですが、花粉症との戦いでもありコードを書きながら目薬を差さなければならないというコンディションでした・・・。

 

もう、最悪ですよね、花粉。

 

しかし、若いころと比べて症状が落ち着いてきたのですが、これって免疫力の低下らしいのでうれしい反面悲しいわけですよ・・・。

 

ということで今回とうとう念願のC問題を突破できたわけです!!!!

ACが出た瞬間マジで超うれしかったわけですよ!!!!!

 

一方でA問題がいつも以上に難敵だったわけですが・・・。

 

ではさっそく振り返ってみましょう!!!

と思ったのですが、なかなか説明しにくい問題なので、申し訳ないのですが今回はコードのみを記載します・・・。

 

A問題

N = list(map(int, input().split()))
t = N[0] // N[2]
if N[0] % N[2] == 0:
    print(N[0])
elif N[2] * (t + 1) <= N[1]:
    print(N[2] * (t + 1))
else:
    print(-1)

 

B問題

N = int(input())

num = list(map(str, input().split()))

A = int(num[0], N)
B = int(num[1], N)

print(A * B)

 

C問題

N = int(input())

A = list(map(int, input().split()))
B = int(input())

total = sum(A)
t = B // total
count = len(A) * t
diff = B - total * t

total_2 = 0
count_2 = 0
for i in range(len(A)):
    if diff >= total_2:
        total_2 = total_2 + A[i]
        count_2 += 1
    if diff < total_2:
        break
print(count + count_2)

 

B問題についてはpythonの基本機能に助けられた感が否めないです。

だけど、前回の反省点である使える機能は使っていくことを実践できたのでOKなのです。

 

明日は月曜なので、今日はこの辺でお開き!!!