1
0

More than 3 years have passed since last update.

AtCoder(ABC)164にPythonで挑戦!A~C問題

Last updated at Posted at 2020-04-26

はじめに

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と解いてしまっていたので、かなりパフォーマンスが落ちてしまいました。
次からは気をつけたいと思います

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0