[白俊]1652号カード(Python 3)
https://www.acmicpc.net/problem/11652
カード番号を与え、最も多くのカード番号を出力する問題.(数量が冗長の場合、最小数量を出力)
入力カードの数をハッシュ値で表す、 .カードの数をソート(逆順最大値でソート) .で最も多いグラフィックスカードの中で最も少ないのは です.
上記の論理を実現した.
[(3, 3), (2, 3), (1, 1)]
value値を基準として並べ替えられているので、キー値に対応する3、2は入力された順序対(stable sorting)並べ替えである.
従って,最後のbiggetからvalue最大値からキー値最小値を出力する論理が実現される.
ただし、これらのコードは必要ありません.ソート()関数を用いてソートする場合,lambdaに2つの条件を加えると簡単に解くことができる.
これはコードが短く、時間が短く、簡単な解題方法です.
カード番号を与え、最も多くのカード番号を出力する問題.(数量が冗長の場合、最小数量を出力)
私の最初の答え
上記の論理を実現した.
import sys
n = int(sys.stdin.readline())
dic = {}
answer_nums = []
for i in range(n): #딕셔너리로 가지고 있는 카드와 개수를 표현
input_num = int(sys.stdin.readline())
if input_num not in dic.keys():
dic[input_num] = 1
else:
dic[input_num] += 1
dic_list = sorted(dic.items(), key=lambda x : x[1], reverse=True) #카드의 개수를 기준으로 역순으로 정렬
biggest = dic_list[0][1] #
answer_nums.append(dic_list.pop(0)[0])
while len(dic_list) != 0:
next_biggest= dic_list[0][1]
if biggest != next_biggest:
break
else:
answer_nums.append(dic_list.pop(0)[0])
answer_nums.sort()
print(answer_nums.pop(0))
ソート()関数を使用して、次のリストでソートします.[(3, 3), (2, 3), (1, 1)]
value値を基準として並べ替えられているので、キー値に対応する3、2は入力された順序対(stable sorting)並べ替えである.
従って,最後のbiggetからvalue最大値からキー値最小値を出力する論理が実現される.
ただし、これらのコードは必要ありません.ソート()関数を用いてソートする場合,lambdaに2つの条件を加えると簡単に解くことができる.
私の2番目の答え
import sys
n = int(sys.stdin.readline())
dic = {}
answer_nums = []
for i in range(n):
input_num = int(sys.stdin.readline())
if input_num not in dic.keys():
dic[input_num] = 1
else:
dic[input_num] += 1
dic_list = sorted(dic.items(), key=lambda x : (-x[1], x[0]))
print(dic_list[0][0])
{key:value}形式のバイナリで上記のソートを行うと、値の大きい値からソートし、キー値の小さい値からソートすることができるので、ソート後の最初のキー値を出力すると簡単に答えが得られます.これはコードが短く、時間が短く、簡単な解題方法です.
Reference
この問題について([白俊]1652号カード(Python 3)), 我々は、より多くの情報をここで見つけました https://velog.io/@sloools/백준-11652번-카드-Python3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol