[백준/파이썬] 1157번 단어 공부 풀이

업데이트:



문제 정보


풀이

문제

주어진 단어에서 알파벳을 대소문자 구분 없이 세어 가장 많이 나온 알파벳을 출력하는 문제입니다.

최댓값이 여러 개면 ?를 출력합니다.

코드

from collections import Counter

s = list(input())
for i, ch in enumerate(s):
    if ch > 'Z':
        s[i] = chr(ord(ch)-(ord('a')-ord('A')))
    else :
        s[i] = ch
        
mosts = Counter(s).most_common()
try:
    if mosts[0][1] == mosts[1][1]:
        print('?')
    else :
        print(mosts[0][0])
except IndexError:
    print(mosts[0][0])

설명

문자를 모두 대문자로 통일한 뒤 Counter로 빈도를 셉니다.

가장 많은 문자 1위와 2위의 개수가 같으면 ?, 다르면 1위 문자를 출력합니다.

단어 길이가 1인 경우를 위해 예외 처리도 포함되어 있습니다.



댓글남기기