단어 공부 in Python
문제
- 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력 데이터
- 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
- 입력 예
Mississipi
zZa
z
baaa
출력 데이터
- 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
- 출력 예
?
Z
Z
A
해결 방법
- 등장하는 문자열에 대해 모두 대문자로 변환하여 dictionary를 이용해 count 해줌
- 딕셔너리에 대해 문자의 발생 빈도를 기준으로 내림차순 정렬
- 딕셔너리 첫 번째 문자와 두 번째 문자의 발생 빈도가 같으면 ?
- 발생 빈도가 다르다면 딕셔너리의 가장 첫 문자 출력
코드
s = input()
check = {}
for letter in s:
letter_upper = str.upper(letter)
check.setdefault(letter_upper, 0)
check[letter_upper] += 1
check = sorted(check.items(), key=lambda e: e[1], reverse=True)
print("?") if len(check)>1 and check[0][1]==check[1][1] else print(check[0][0])
문제 원본 링크
https://www.acmicpc.net/problem/1157