ABC189参戦記

プログラミング

あわただしい日々の中、今回の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)

コメント

タイトルとURLをコピーしました