Chapter 07

ABC228

Meg
Meg
2021.11.21に更新

どうもこんにちは、Megです。
このチャプターでは、PythonでAtCoder Beginner Contest 228 の解説を行っていきます。

A - On and Off

問題はこちら。

https://atcoder.jp/contests/abc228/tasks/abc228_a

コードは以下です!自分の提出はこちら

A.py
S, T, X = map(int, input().split())

if S > T and S > X:
    T += 24
    X += 24
elif S > T and S <= X:
    T += 24

if S <= X < T:
    print("Yes")
else:
    print("No")

コード解説

S, Tが以下のような位置関係にあれば、XS, Tの間に存在するかどうか調べるだけで良いです。

しかし下図2つのような位置関係の時、多少の数値調整が必要です。

上図のようにX, TSより日をまたいだ時間である場合、X, Tともに24を足します。
コード上ではこちらの部分に当たります。

if S > T and S > X:
    T += 24
    X += 24

参考

B - Takahashi's Secret

問題はこちら。

https://atcoder.jp/contests/abc228/tasks/abc228_b

コードは以下です!自分の提出はこちら

B.py
N, X = map(int, input().split())
As = list(map(int, input().split()))

cnt = 0
knows = [False] * N

while not knows[X-1]:
    knows[X-1] = True
    X = As[X-1]
    cnt += 1

print(cnt)

コード解説

参考

https://atcoder.jp/contests/abc228/submissions/27411360

C問題以降

誠意記事作成中です…!

GitHub

今回のコンテストを含む、AtCoderに関する全てのコードをGitHubで管理しています。
気になる方は以下のURLから参照してみてください。

https://github.com/MegGitHub/AtCoder.git