ABC332の回
A-問題
シナリオを忠実にコードに反映させた
A.py
N,S,K = map(int,input().split())
all = 0
for _ in range(N):
P,Q = map(int,input().split())
# 購入費の総和を求める
all += P * Q
# 送料が必要か判定する
if all < S:
print(all + K)
else:
print(all)
B-問題
この問題もシナリオを忠実にコードに反映させた
B.py
K,G,M = map(int,input().split())
# グラスとマグカップの初期値 0
g = 0
m = 0
# K回繰り返す
while K:
K -= 1
# グラスが満杯なら空にする
if g == G:
g = 0
# マグカップが空なら満杯する
elif m == 0:
m += M
# グラスに注げる分だけ移動する
elif (G - g) <= m:
m -= (G - g)
g = G
# マグカップに入っている分すべてをグラスに注ぐ
elif (G - g) > m:
g += m
m = 0
print(g,m)
C-問題
洗濯済無地シャツが無かったり、イベントに行くときにロゴ入りシャツを購入する
丁寧に実装したつもりが本番では、16問WA でした。最後に洗濯済と購入したロゴ入りシャツを加算するのを
忘れていたかもしれません。
C.py
# 無地のTシャツM枚
N,M = map(int,input().split())
S = input()
# ストックしている無地のシャツ
m = M
# 無地を汚したシャツをカウントする
xm = 0
# ロゴ付きシャツ
l = 0
# ロゴ付きを汚したシャツをカウントする
xl = 0
for i in range(N):
if(S[i]=="0"):
# 汚したシャツを洗濯する
m += xm
xm = 0
# 汚したシャツを洗濯する
l += xl
xl = 0
elif(S[i]=="1"):
# 無地が残っているとき
if m > 0:
m -= 1
xm += 1
# ロゴが残っているとき
elif l > 0:
l -= 1
xl += 1
else:
# ロゴを買って着る
xl += 1
elif S[i]=="2":
# ロゴが残っているとき
if l > 0:
l -= 1
xl += 1
else:
# ロゴを買って着る
xl += 1
# ロゴの枚数を集計
l += xl
print(l)