문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
- 입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
- 출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
- 예제 입력 1
Mississipi
- 예제 출력 1
?
- 예제 입력 2
zZa
- 예제 출력 2
Z
- 예제 입력 3
z
- 예제 출력 3
Z
- 예제 입력 4
baaa
- 예제 출력 4
A
- 첫번째 시도
word = input() word = list(word.upper()) maxA = 0 answer = '' for i in word: if word.count(i) > maxA and i != answer: maxA = word.count(i) answer = i elif word.count(i) == maxA and i != answer: answer = '?' print(answer)
- 두번째 시도
word = input().upper() word = list(set(word)) maxA = 0 answer = '' for i in word: if word.count(i) > maxA: maxA = word.count(i) answer = i elif word.count(i) == maxA and i != answer: answer = '?' print(answer)
- 정답
word = input().lower() wordList = list(set(word)) cnt = [] for i in wordList: a = word.count(i) cnt.append(a) if cnt.count(max(cnt)) > 1: print('?') else: print(wordList[cnt.index(max(cnt))].upper())
word랑 wordList랑 서로 다르게 나눴으면 쉽게 풀었을 문제인데 이 부분을 생각 못했다.