【ABC155 A】「Poor」を解く【Python3】

abc155a

コンテスト一覧へ

 

整数A,B,C の3つ組の数について、その3つ組が「かわいそう」かどうかを判定する問題です。

ある2つが等しく、残り1つが異なるとき、「かわいそう」であるといいます。

3つ組のうち、重複するものを削除した後の残りの数を調べることで解くことができます。

提出
a = list(map(int, input().split()))
b = len(set(a))

if b == 2:
    print("Yes")
else:
    print("No")

3つの整数を受け取って、リストにします。

set() を用いて、重複するものを削除したのち、その数を調べます。

リストの場合、len() を用いて、リスト内の要素の数を調べることができます。

重複したものを削除した後の数が、「2」であれば、「ある2つが等しく、残り1つが異なる(かわいそう)」状態だったということになるため、その時のみ「Yes」を出力します。

それ以外は「No」です。

split()メソッド

split()メソッドは、区切り文字を指定して、文字列を分割します。

区切り文字を指定しない場合、空白、タブ、改行で分割されます。

str.split(区切り文字)
map()関数

map()関数は、配列内のすべての要素に関数の処理を適用します。

map(関数、配列)
set()

set型とは、集合を扱うための型のことです。

リスト型と異なり、重複した要素がなく、要素に順番がありません。

set()の引数にリストやタプルを指定することで、重複する要素が除外されたset型オブジェクトが生成されます。

set(オブジェクト)
len()関数

len()関数は、引数で指定したオブジェクトの長さを返します。

文字列の場合は文字数、リストの場合は要素数を取得できます。

len(オブジェクト)

 

まとめて書くこともできます。

提出
print("Yes" if len(set(map(int, input().split())))==2 else "No")

実は、リストにしなくても、そのまま set() を用いて重複を削除できます。

(先ほどのコードは、一度リストにして、処理を2行に分けた方がわかりやすいかなと思ったので、そうしてあります)

【ABC155】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。