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
問題文
実数 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
問題文
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