ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC216 A - Signed Difficulty / B - Same Name【Python解答例】

AtCoder Beginner Contest216のA とB問題についてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 216 - AtCoder


AtCoder Beginner Contest216 A - Signed Difficulty

A - Signed Difficulty

問題文

実数 X.Y が与えられます。ただし Y はちょうど 1 桁です。

0≤Y≤2 ならば、X-
3≤Y≤6 ならば、X
7≤Y≤9 ならば、X+
と出力してください。

制約

・1 ≤ X ≤ 15
・0 ≤ Y ≤ 9
・X と Y は整数

解答例

x, y = map(int,input().split("."))

if 0 <= y <= 2:
    print(str(x)+"-")
elif 3 <= y <= 6:
    print(str(x))
elif 7 <= y <= 9:
    print(str(x)+"+")

解説

整数部がX、小数部がYの実数が与えられ、Yの値にあわせて+や-を付け加えて出力する問題です。

正直、入力の受け取り方に戸惑いましたが、split(".")とすることで.の前をX、.の 後ろをYに代入することができました。

あとは問題文の通りにYについて場合分けを行い、Xの後ろに+や-をつけて出力すればOKでした。



AtCoder Beginner Contest216 B - Same Name

B - Same Name

問題文

N 人の人がいます。i(1≤i≤N) 人目の人の姓は S i​ 、名は T i​ です。

同姓同名であるような人の組が存在するか、すなわち 1≤i

制約

・2≤N≤1000
・N は整数
・S i​ ,T i​ は英小文字のみからなる長さ 1 以上 10 以下の文字列

解答例

n = int(input())

S = []
T = []
for i in range(n):
    s, t = input().split()
    S.append(s)
    T.append(t)

flag = False
for i in range(n-1):
    if flag:
        break
    for j in range(i+1,n):
        if S[i] == S[j] and T[i] == T[j]:
            flag = True
            break

if flag:
    print("Yes")
else:
    print("No")

解説

同姓同名の人がいるかどうか答える問題です。

制約が厳しくないのですべての人の組み合わせを全探索します。

同姓同名の人がいるかはflagを用いて、もし同姓同名がいればTrueとなるように管理します。

if S[i] == S[j] and T[i] == T[j] の部分でi番目とj番目の人の姓(S)と名(T)を比較し、両方一致していればflagをTrueとします。

最後にflagにあわせて答えを出力すればACでした。



ABC216の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com