
big = max(num, key=lambda k: num[k])
big = max(num.values())
big = max(num[k] for k in big)
big = max(num, key = num.get)
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
Mississipi
?
zZa
Z
z
Z
baaa
A
def solve(T):
UP = T.upper()
num = {}
for i in UP:
if i in num.keys():
num[i] += 1
else:
num[i] = 1
big = max(num.values())
count = 0
for key in num.keys():
if num[key] == big:
count += 1
result = key
if count > 1:
print('?')
else:
print(result)
T = input()
solve(T)
위를 설명하면
먼저, 대소문자의 구분을 없애기 위해 .upper()를 사용했다.
다음으로 num이라는 dictionary를 만들고, 입력된 값이 num의 key에 있는 지 확인하고 없으면 1, 있으면 +=1을 하였다. 이때 최대로 많은 value값을 가진 key가 중복되면 count 값을 증가 시킨다. 또한, 이는 최대값이므로 result값에 저장한다.