【题目】
小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。
有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。
输入描述
第一行两个数 n, m
第二行 m 个数,c1, c2, ... , cm , ci 表示第 i 个方块落在第几列
其中 1 <= n, m <= 1000, 1 <= ci <= n
输入例子
3 9
1 1 2 2 2 3 1 2 3
输出例子
2
python 代码
from collections import Counter
if __name__ == '__main__':
nm = input()
n, m = nm.split()[:2]
n = int(n)
m = int(m)
num = input().split()
score = 0
result ={}
for i in set(num[:m]):
result[i]= num.count(i)
set1=set(eval(i) for i in result.keys())
set2 = set(range(1,n+1))
if set1==set2:
print(min(list(Counter(result).values())))
else:
print(0)
知识点
思路是:
获取输入
转换为数字类型,可以使用eval()函数去除引号:
a='123456'
print(eval(a)) ->123456
使用count()统计每个元素的个数,生成为字典形式
对比keys是否包含所有的数据
最后选取最小的数据即为输出结果