BOJ 11652カード


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回並べ替えます.
    リストを使用する場合.インデックスを数値で見つけるのは難しいです.
    ディックシャーナを利用したらどうですか.
    正しいコード:
    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でやっても早いのかな...待ち時間が長すぎる