알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
주어진 알고리즘 그대로 구현하기.
key
값을 딕셔너리가 가지고 있지 않다면 value
값을 1
로 만들고, 이미 가지고 있다면 value
값을 1
증가시킴import sys
input = sys.stdin.readline
a = str(input())
s = a.upper()
dic = {}
for chr in s:
if chr in dic:
dic[chr] += 1
else:
dic[chr] = 1
max_value = max(dic.values())
max_keys = [k for k, v in dic.items() if v == max_value]
if len(max_keys) > 1:
print('?')
else:
print(max_keys[0])
input
을 사용하여 문자열 a
를 입력받고 대문자로 변환하여 변수 s
에 저장한다.
각 알파벳의 등장 횟수를 저장하기 위한 딕셔너리 dic
을 생성한다.
문자열 s
를 순회하면서 각 알파벳이 딕셔너리에 이미 존재하는지 검사한 후, 존재한다면 해당 알파벳의 등장 횟수를 1
증가시키고, 존재하지 않는다면 새로운 키-값 쌍을 추가하여 해당 알파벳의 등장 횟수를 1
로 초기화한다.
딕셔너리 dic
의 값 중 가장 큰 값을 찾아 변수 max_value
에 저장하고, 해당 값을 가지는 모든 key
를 찾아 리스트 max_keys
에 저장합니다. 이 때, 리스트 컴프리헨션을 사용하여 if v == max_value
인 모든 key
k
를 리스트에 추가한다.
마지막으로, max_keys
의 길이가 1보다 크면 ?
를 출력하고, 그렇지 않으면 리스트 max_keys
의 첫 번째 요소를 출력한다.