LoginSignup
1
0

More than 1 year has passed since last update.

ABC201 A Dif:12 『AtCoder ABC201~225 ARC119~128 灰・茶・緑問題 超詳細解説』サンプル

Last updated at Posted at 2022-03-03

この記事は 『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")
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