알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.
문자열이 주어졌을 때 가장 많이 나온 알파벳을 구하는 문제다. 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 그냥 max()를 구하면 최댓값이 여러개인 경우가 무시되므로 나는 각각의 알파벳이 몇번 나왔는지 dictionary에 저장할 생각을 했다. string을 반복문으로 하나씩 받으면서 count를 해주었다.
word = input().upper()
mydic = {}
for i in word:
if i in mydic.keys():
mydic[i] += 1
else:
mydic[i] = 1
maxs = [k for k,v in mydic.items() if max(mydic.values()) == v]
if len(maxs) > 1:
print("?")
else:
print(maxs[0])
출력형태가 정해져있는 경우 string이나 list를 미리 만들어서 사용하는 게 바람직하다고 생각한다. 알파벳은 A부터 Z까지밖에 없으므로 범위를 한정시켜 계산하면 깔끔해보인다. 알파벳 개수만큼 count를 해야된다는 단점이 있지만 입력값의 길이와 상관없이 반복횟수가 정해져 있다는 점에서 효율적이라고 할 수 있다.
n = input()
n = n.upper()
alpa='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = []
for i in alpa:
result.append(n.count(i))
if result.count(max(result)) > 1:
print("?")
else:
print(alpa[result.index(max(result))])