あわただしい日々の中、今回のABC189は振り返りが不十分のため、メモ程度の内容です。
A~C問題のPython3のACコードを掲載しておきます。
A – Slot
条件分岐が書けるかと、文字列が同じかどうかの判定ができるかを問われる問題。
# AtCoder Beginner Contest 189
# A - Slot
S=input()
if S[0]==S[1]==S[2]:
print("Won")
else:
print("Lost")
出力する文字列の大文字/小文字が間違っていてもWAになるため、注意が必要です。
B – Alcoholic
繰り返し処理が書けるかを問われる問題。
また、プログラミングで少数を扱う場合は、誤差に注意が必要なことを気づかせてくれる問題。
私は、1WAしました。
# AtCoder Beginner Contest 189
# B - Alcoholic
N,X=map(int,input().split())
X*=100
al=0
for i in range (N):
v,p=map(int,input().split())
al+=v*p
if al>X:
print(i+1)
exit()
print(-1)
C – Mandarin Orange
ヒストグラム上の最大面積を求める問題で有名な問題のようです。
O(n)で解けるらしいのですが、理解できていません。
この問題は処理が軽いため、二重のfor文でもPypy3でACします。
# AtCoder Beginner Contest 189
# C - Mandarin Orange
N=int(input())
A=list(map(int,input().split()))
ans=max(A)
for i in range (N):
h=A[i]
for j in range (i,N):
h=min(h,A[j])
ans=max(ans,(j-i+1)*h)
print(ans)
コメント