ABC201 - Atcoder/Python精進のための解説メモ

カレンダーアイコン
2021/06/14

ABC201 - A.Tiny Arithmetic Sequence

AtCoder公式 | ABC201 - A.Tiny Arithmetic Sequence

解答

aaa = list(map(int, input().split()))
ans = 'No'
if sum(aaa) % 3 == 0:
    if sum(aaa) // 3 in aaa:
        ans = 'Yes'
print(ans)

要点解説メモ

  • 等差数列の場合、平均をとった値が真ん中の数字になることを利用する

ABC201 - B.Do you know the second highest mountain?

AtCoder公式 | ABC201 - B.Do you know the second highest mountain?

解答

n = int(input())
sstt = []
for _ in range(n):
    s, t = input().split()
    sstt.append([int(t), s])
sstt.sort()
print(sstt[-2][1])

要点解説メモ

  • 多次元配列は、全体ソートしたときに1つ目の値でソートされる
  • あらかじめ入れ替えておくとシンプルで良さそう

ABC201 - C.Ringo's Favorite Numbers 2

AtCoder公式 | ABC201 - C.Ringo's Favorite Numbers 2

解答

s = input()
maru_num = set()
q_num = set()
batsu_num = set()
ans = 0

for i, s in enumerate(s):
    if s == 'o':
        maru_num.add(str(i))
    elif s == '?':
        q_num.add(str(i))
    else:
        batsu_num.add(str(i))

for i in range(10000):
    pin = str(i).zfill(4)

    if all(m in pin for m in maru_num):
        pass
    else:
        continue

    if all(b not in pin for b in batsu_num):
        pass
    else:
        continue

    ans += 1

print(ans)

要点解説メモ

  • 4桁の暗証番号すべてにおいて、「○の数字がすべて存在する」かつ「☓の数字がすべて存在しない」ものを数えればよい
  • ?の数字は使っても使わなく良いので、上記の数え方なら関係ない
  • 場合分けの数が少ないので、がんばって場合分けしてもよさそう

ABC201 - D.

AtCoder公式 | ABC201 - D.

解答

まだ解いていません

要点解説メモ