백준 온라인 저지 - 단어 공부(1157)
Baekjoon Problem #1157 - 문자열에서 가장 많이 사용된 알파벳을 찾는 문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
- 입력
- 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
- 출력
- 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예제 입력 1
Mississipi
예제 출력 1
?
예제 입력 2
zZa
예제 출력 2
Z
예제 입력 3
z
예제 출력 3
Z
예제 입력 4
baaa
예제 출력 4
A
My Solution in Python
s = input().upper()
d = {c : s.count(c) for c in set(s)}
m = [k for k in d.keys() if d[k] == max(d.values())]
print(m[0]) if len(m) == 1 else print('?')
우선 입력받은 문자열을 upper() 함수를 사용하여 모두 대분자로 변환합니다.
문자열을 set() 함수를 사용하여 세트 타입으로 변환하면 중복된 문자는 제거되며,
각 문자와 그 빈도수를 딕셔너리로 저장합니다.저장된 딕셔너리에서 빈도수가 가장 큰 문자를 리스트로 저장하고,
그 길이가 1이면 해당 문자를 반환하며 그 이상이라면 ‘?’ 문자를 반환합니다.숏코딩이 아니고 이보다 더 쉽게 코드를 짤 수 있을까?? 의견 있으신 분들은 댓글로 부담없이 알려주세요~
백준 온라인 저지 https://www.acmicpc.net/problem/1157
댓글남기기