AtCoder ABC155
AtCoder ABC155解いた分だけまとめ。
とりあえずレートが昨年末くらいに戻った...よかった...
結果はABC3完。D問題がめちゃくちゃ難しかったのびっくりした。
解いてないけど。
目次
A. Poor
入力されたリストを重複削除をして、もとの長さと変わるかで結果を判定する。
またset
出てきたね。学生時代散々使った記憶ある。
ACしたコード
#coding:utf-8 num = list(map(int, input().split())) num_list = set(num) if len(num_list) == 2: print('Yes') else: print('No')
B. Papers, Please
問題の通り実装できますか?系の話なんだけど、見事に引っかかって
時間かけすぎてしまった。
入国可能な条件は以下の通り。奇数だけの時も入国OKだったという条件を間違えていた。
xが書類に書かれている整数のうち、偶数であるものならば、xは3または5で割り切れる。
つまり、入国拒否になる場合は、
xが書類に書かれている整数のうち、偶数なのに3でも5で割り切れないものがある
ACしたコード
全部奇数のときの場合分けはいらなかったと思う。
入国拒否があればプログラムを終了させるため、exit()
を使った。
#coding:utf-8 n = int(input()) a = list(map(int, input().split())) num = [] #偶数だけ抜き出し for i in range(0, n): if a[i] % 2 == 0: num.append(a[i]) #print(num) #全部奇数の場合は入国許可 if len(num) == 0: print('APPROVED') exit() else: for j in range(0, len(num)): if num[j] % 3 != 0 and num[j] % 5 != 0: print('DENIED') exit() print('APPROVED')
C. Poll
問題文
bた辞書形式のやつ。辞書をまだ息をするように書けない。
単語ごとに書かれた回数を集計し、最も多いものをすべて辞書順に出力する。
ポイント
- 集計にcollectionsライブラリを使う
- 各要素の出現回数を一括で取得するには、
collections.Counter
が便利- Counterオブジェクトが生成される
- dictのようにkey, valueで値の取り出しが可能
ACしたコード
#coding:utf-8 import collections n = int(input()) s = [input() for _ in range(n)] ans = [] # 集計後、出現回数の最大値を取得 c = collections.Counter(s) count_max = max(c.values()) # 出現回数が最多だった単語をすべて抜き出し for key, num in c.items(): if num == count_max: ans.append(key) ans = sorted(ans) for i in ans: print(i)