この記事は 『AtCoder ABC201~225 ARC119~128 灰・茶・緑問題 超詳細解説』 のサンプルです。
【その他のサンプル】
ABC225 B:https://qiita.com/sano192/items/10133eeb6abc64f1441e
ABC213 C:https://qiita.com/sano192/items/9cd14b2cefd8bafa5615
ABC221 D:https://qiita.com/sano192/items/8679200f0f89e636b354
ARC122 B:https://qiita.com/sano192/items/1f314701f2d5b18c8816
「ものすごく丁寧でわかりやすいABC解説」シリーズをベースに【キーワード】【どう考える?】【別解】を追加し、【解説】と【実装のコツ】を分けることでよりわかりやすく、具体例や図もより豊富に全ての問題の解説を書き直しました!
さらにQiitaでは公開していないARC119~128の灰・茶・緑問題も解説しています!
緑を目指す灰・茶コーダーの方へおすすめ!
値段:300円(Kindle Unlimited対象)
【kindle】
【booth(pdf)】
ARC119~128の部分のみ抜粋した廉価版 もあります。
値段:200円(Kindle Unlimited対象)
【kindle】
【booth(pdf)】
【キーワード】
なし
【どう考える?】
問題文にある「即ち、A3-A2=A2-A1を満たすようにAを並び替えることはできますか?」を判定できればよい。
(A1,A2,A3)の並び替えパターン数が6パターンしかないことに気づけばあとは6パターンを書き下してifで条件分岐するだけ。
【解説】
A1,A2,A3の並び替えとしてありうるものと、判定する条件は以下の通り。
(A1,A2,A3) → A3-A2=A2-A1
(A1,A3,A2) → A2-A3=A3-A1
(A2,A1,A3) → A3-A1=A1-A2
(A2,A3,A1) → A1-A3=A3-A2
(A3,A1,A2) → A2-A1=A1-A3
(A3,A2,A1) → A1-A2=A2-A3
これをそのままifで書く。
条件を満たしていれば「Yes」、満たしていなければ「No」を出力する。
【実装のコツ】
<ifの書き方>
if 条件:
処理内容
elif 条件:
処理内容
else:
処理内容
if,elifは「条件を満たせば」→「処理内容を行う」という意味。コードの上から順に処理を行っていく。
elseは「そうでなければ」すなわち「if,elifの条件が満たされなければ」→「処理内容を行う」という意味。
<文字列の出力>
文字を出力する際は
print(”文字”)
というようにダブルクオーテーションをつける。
pythonにこれは変数ではなく、文字であると伝えるため。
・正 print(“Yes”)
・誤 print(Yes)
【提出】
# 入力の受け取り
A1,A2,A3=map(int, input().split())
# (A1,A2,A3) → A3-A2=A2-A1ならば
if A3-A2==A2-A1:
# 「Yes」を出力
print("Yes")
# (A1,A3,A2) → A2-A3=A3-A1ならば
elif A2-A3==A3-A1:
print("Yes")
# (A2,A1,A3) → A3-A1=A1-A2ならば
elif A3-A1==A1-A2:
print("Yes")
# (A2,A3,A1) → A1-A3=A3-A2ならば
elif A1-A3==A3-A2:
print("Yes")
# (A3,A1,A2) → A2-A1=A1-A3ならば
elif A2-A1==A1-A3:
print("Yes")
# (A3,A2,A1) → A1-A2=A2-A3ならば
elif A1-A2==A2-A3:
print("Yes")
# そうでなければ
else:
# 「No」を出力
print("No")
【別解】
A1,A2,A3を小さい順に並び替え、条件「A3-A2=A2-A1」を満たしているか調べればifを並べなくても解ける。
まずA1,A2,A3をリストとして受け取り、ソートして、条件を満たすか調べればよい。
以下のように書くとリストを小さい順にソートできる。
(リスト).sort()
# 入力をリストとして受け取り
A=list(map(int, input().split()))
# 小さい順に並び替え
A.sort()
# A[2]-A[1]=A[1]-A[0]ならば
if A[2]-A[1]==A[1]-A[0]:
# 「Yes」を出力
print("Yes")
# そうでないなら
else:
# 「Noを出力」
print("No")