#はじめに
AtCoder ABC164にPythonで挑戦しました!
Ratedとしては2回目の挑戦です。
A〜Cまで解けました。
D問題はTLEでした。
#A問題
sがwより大きければsafe、その他の時はunsafeを出力すれば終わりです
A.py
s, w = map(int, input().split())
if s > w:
print("safe")
else:
print("unsafe")
#B問題
無限ループで、aまたはcが0以下になるまで回しましょう
高橋くんが先攻なので、両方とも負になってしまう回は、高橋くんの勝ちなので先にflg1を処理するようにコードを書きましょう
B.py
a, b, c, d = map(int, input().split())
flg1 = False
flg2 = False
while True:
c -= b
a -= d
if c <= 0:
flg1 = True
if a <= 0:
flg2 = True
if flg1:
print("Yes")
exit()
if flg2:
print("No")
exit()
#C問題
set()に直すことにより、重複を省くことができます。重複を除いた個数が答えです。
C.py
n = int(input())
s = [str(input()) for _ in range(n)]
print(len(set(s)))
#D問題
二重ループになっているので計算量が大きくなりすぎましたね
このコードではTLEになります。
D.py
s = input()
keta = len(s)
ans = 0
mul = []
for i in range(100):
if "0" in str(2019 * i):
pass
else:
mul.append(str(2019 * i))
for i in range(len(mul)):
for j in range(0, keta + 1 - len(str(mul[i]))):
if s[j : j + len(mul[i])] == mul[i]:
ans += 1
print(ans)
#まとめ
今回は2回目の挑戦でした
A問題はどうせ解けただろうと思っていたのですが、まさかのunsafeとsafeを反対にしてしまっていることに気づかずにB,Cと解いてしまっていたので、かなりパフォーマンスが落ちてしまいました。
次からは気をつけたいと思います