解説つき!競ってわかる はじめてpythonプログラミング

競プロの情報発信と備忘録を兼ねている

ABC236B

ABC236Bの解説

atcoder.jp

解答コード

https://atcoder.jp/contests/abc236/submissions/28778202

 

問題

各番号に4つの種類があるトランプについて,ある一つの番号だけが1種類欠損している状態を判別する問題です.

 

解説

欠損していない番号は4種類のカードがあり,欠損している番号だけ3枚になるので,そこを処理して判別するプログラムを記述します.

まずは,標準入力を読み取って

N = int(input())
A = list(map(int, input().split()))

 

4枚揃うかどうかを数えるカウンターとなるlistを用意して,それぞれの番号ごとに枚数を数えていきます.collections.Counter を用いるとより良いですが,今回はなんとくそのまま記述しました.

L = [0]*N
for a in A:
    L[a-1] += 1

 

全て数え終えたら,3枚しかなかったインデックス番号を探します.

for i, l in enumerate(L):
    if l == 3:
        ans = i+1
        break

 

あまり使用しないのでど忘れしていましたが,他者の解答例を参考にしたところlist.index を用いるとスマートです.参考までに...

L = [4, 4, 3, 4]
print(L.index(3))
# 2

 

以上,ABC236Bの解説でした.