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

abc155a

「AtCoder」解説一覧へ

整数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】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です