考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC056-B - NarrowRectanglesEasy を解く

ABC056-B - NarrowRectanglesEasy

 

2つの同じ幅の長方形があり、上側にある長方形を横方向にどれだけ動かせば

お互いが接する位置に移動できるかを求める問題

 

この問題は、2つの図形の位置関係をよく考える必要がある

具体的には、上の図形が下の図形より右側にあるか、左側にあるか、ということだ

しっかりと場合分けをして、答えを求める必要がある

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
W,a,b=map(int,input().split())

# 上の図形が下の図形より左側にある場合
if b<a:

  # 初めから接している場合
  if a<=b+W:
    print(0)
  else:
    print(a-(b+W))

# 下の図形の真上に上の図形がある場合
elif b==a:
  print(0)

# 上の図形が下の図形より右側にある場合
else:

  # 初めから接している場合
  if b<=a+W:
    print(0)
  else:
    print(b-(a+W))

 

提出結果はACでした

 

ガチガチに場合分けをしてコードを書いたけれど

解説PDFではとてもシンプルな説明が書かれている

 

ちょっと今回の自分の実装は無駄が多かったようだ…

興味のある方は確認してみてください

 

AtCoder Beginner Contest 056 解説