[백준/파이썬] 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인 경우를 위해 예외 처리도 포함되어 있습니다.



이런 주제는 어떠신가요?

비슷한 난이도와 유형의 문제를 이어서 보면 풀이 감각을 더 빠르게 잡기 좋습니다.

댓글남기기