알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
word = input().upper()
letters = tuple(set(word))
count = list()
for i in range(len(letters)):
count.append(word.count(letters[i]))
print(letters[count.index(max(count))] if count.count(max(count)) == 1 else '?')
word = input().upper()
letters = tuple(set(word))
count = list()
단어를 입력 받고 대문자(upper
)로 변환한다. 그 이유는
주어진 단어에 대한 집합(set
)을 생성하고 집합에 대한 튜플(tuple
)을 생성한다. 그 이유는
set
은 문자열의 각 문자를 중복을 허용하지 않고 포함한다.letters
의 값은 변경되어선 아니 된다.주어진 단어에서 각 문자의 사용 빈도를 포함할 list
를 생성한다.
for i in range(len(letters)):
count.append(word.count(letters[i]))
count()
함수를 통해 주어진 단어에서 각 문자가 사용된 개수를 리스트에 추가한다.
print(letters[count.index(max(count))] if count.count(max(count)) == 1 else '?')
각 문자의 사용 빈도를 리스트에 추가할 때 letters
를 기준으로 반복문을 수행하였으므로 letters
의 인덱스와 count
의 인덱스는 일치한다.
따라서 count
리스트의 최대값과 그 인덱스(순서)를 알 수 있다면 최대값에 대응하는 문자도 알 수 있다.
이때 리스트 최대값의 개수가 2개 이상이라면 ?
를 출력한다.
word == 'MISSISSIPI'
letters == ('M', 'I', 'S', 'P')
count == [1, 4, 4, 1]
print('?')
word == 'APPLE'
letters == ('A', 'P', 'L', 'E')
count == [1, 2, 1, 1]
print('P')