BOJ 11652カード
5773 ワード
https://www.acmicpc.net/problem/11652
1秒、256 MBメモリ
input :
デジタルカードの数N(1<=N<=10000)
与えられた整数.
output :
最大整数を出力します.
条件:
書かれた数字は(-2^62<=数字<=2^62)
最も多くの数を持つと多くの種類があり、出力が小さい.
2^62 = 4,611,686,018,427,388,000 WOW...不思議です.
数値の長さでリストを作成することはできません.
入力を受信するとtuple(整数、入力回数)として記録します.
[入力回数]降順、[整数]降順で並べ替えます.
最初のインデックスを印刷します.
最大100000の長さのリストを作成し、2回並べ替えます.
リストを使用する場合.インデックスを数値で見つけるのは難しいです.
ディックシャーナを利用したらどうですか.
正しいコード:
counterは、リストや文字列などを入力して、その中にどのようなものが存在するかを統計するクラスで、非常に便利です.
また、これらの問題条件では、個数が同じであれば小さな数字が出力されるため、まずすべての項目をソートする必要があります.
いつpypy 3でやっても早いのかな...待ち時間が長すぎる
1秒、256 MBメモリ
input :
デジタルカードの数N(1<=N<=10000)
与えられた整数.
output :
最大整数を出力します.
条件:
書かれた数字は(-2^62<=数字<=2^62)
最も多くの数を持つと多くの種類があり、出力が小さい.
数値の長さでリストを作成することはできません.
入力を受信するとtuple(整数、入力回数)として記録します.
[入力回数]降順、[整数]降順で並べ替えます.
最初のインデックスを印刷します.
最大100000の長さのリストを作成し、2回並べ替えます.
リストを使用する場合.インデックスを数値で見つけるのは難しいです.
ディックシャーナを利用したらどうですか.
正しいコード:
N = int(input())
number = {}
for i in range(N):
data = int(input())
if data in number:
number[data] += 1
else:
number[data] = 1
answer = sorted(number.items(), key = lambda x : (-x[1], x[0]))
print(answer[0][0])
ディックシャーナではなくカウンタを利用する方法もある.counterは、リストや文字列などを入力して、その中にどのようなものが存在するかを統計するクラスで、非常に便利です.
また、これらの問題条件では、個数が同じであれば小さな数字が出力されるため、まずすべての項目をソートする必要があります.
import sys
from collections import Counter
n = int(sys.stdin.readline())
data = []
for i in range(n):
data.append(int(sys.stdin.readline()))
cnt = Counter(sorted(data)).most_common(1)
print(cnt[0][0])
いつpypy 3でやっても早いのかな...待ち時間が長すぎる
Reference
この問題について(BOJ 11652カード), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/BOJ-11652-카드テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol