AtCoder ABC 190 B – Magic 3 Python解説

スポンサーリンク

Magic 3

魔法使いの高橋君は魔物と戦っています。
高橋君は N 種類の呪文を使うことができます。 i 番目の呪文は詠唱に Xi 秒かかり、威力は Yi です。
ただし、この魔物は強いので、詠唱に S 秒以上かかる呪文や、威力が D 以下の呪文ではダメージを与えられません。 また、呪文以外の方法でダメージを与えることもできません。
高橋君は魔物にダメージを与えられるでしょうか?

AtCoder Beginner Contest 「Magic 3」

呪文の詠唱時間と威力が条件を満たすかどうか判定していきます。

n, s, d = map(int, input().split())

for _ in range(n):
    x, y = map(int, input().split())
    if x < s and y > d:
        print("Yes")
        break
else:
    print("No")
n, s, d = map(int, input().split())

for _ in range(n):
    x, y = map(int, input().split())
    if x >= s:
        continue
    if y <= d:
        continue
    print("Yes")
    break
else:
    print("No")
n, s, d = map(int, input().split())

def damage():
    x, y = map(int, input().split())
    return x < s and y > d

if any(damage() for _ in range(n)):
    print("Yes")
else:
    print("No")

色々な解き方を紹介しましたが、一番最後のコードはPythonの組み込み関数のanyを使っています。これはいずれかの要素がTrueかどうかを判定してくれるので、条件文を書いた関数を作って、anyで真偽値を判定しています。

AtCoderB問題

Posted by cheese