본문 바로가기

Algorithm

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

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

from collections import Counter

def solution(s):
    s = s.upper()
    common = Counter(s).most_common(2)
    if len(common) == 2 and common[0][1] == common[1][1]:
        return '?'
    else:
        return common[0][0]
print(solution(input()))

 

1. 먼저 단어 s를 대문자로 바꿔주고, Counter를 사용하여 s의 각 알파벳 개수를 구합니다.

2. Counter의 most_common을 통해 가장 많이 출현한 알파벳 수 2개를 common 변수에 설정합니다

(예: Mississipi 라면 [('I', 4), ('S', 4)], Zz라면 단순히 [('Z', 2)] 1개).

3. 이후 Mississipi처럼 common의 길이가 2개이고, 가장 많이 출현한 알파벳도 2개라면 그대로 "?" 출력합니다.

그게 아니라면 제일 첫번째 common의 알파벳을 출력합니다.