白駿10816号:デジタルカード2
1477 ワード
問題解決の考え方 Collectionsモジュールを利用するCounterクラス 二分探索の応用
✔コード Counterクラスのmost common()メソッドを使用すると、登場回数を基準に降順に並べられます.しかし二分探索のために数字を基準に昇順で並べ替えるのが便利であるため,並べ替え関数を用いて並べ替えた. 以降,並べられたcntリストで二分探索を行い,探す数字があれば対応する出現回数を出力し,なければ0を出力する. は同じコードで、Python 3ではだめ、PyPy 3ではだめです.
✔関連概念の最も値を求めます:https://codepractice.tistory.com/712 二分ルックアップアルゴリズム:https://satisfactoryplace.tistory.com/392
import sys
from collections import Counter
N = int(sys.stdin.readline())
own = list(map(int, sys.stdin.readline().split()))
cnt = sorted(Counter(own).most_common())
M = int(sys.stdin.readline())
quest = list(map(int, sys.stdin.readline().split()))
answer = []
for i in range(M):
end = len(cnt) - 1
start = 0
while True:
if start > end:
answer.append(0)
break
mid = (start + end) // 2
if cnt[mid][0] < quest[i]:
start = mid + 1
elif cnt[mid][0] > quest[i]:
end = mid - 1
elif cnt[mid][0] == quest[i]:
answer.append(cnt[mid][1])
break
for i in range(M):
print("{} ".format(answer[i]), end="")
print()
Reference
この問題について(白駿10816号:デジタルカード2), 我々は、より多くの情報をここで見つけました https://velog.io/@dlehdtjq00/백준-10816번-숫자-카드-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol