백준/브론즈1

[Python] 백준 1157번 - 단어 공부

두부마라탕 2025. 4. 29. 17:54

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


문제

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

 

코드

keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

Alphabet = dict.fromkeys(keys, 0)

str = input().upper()
for i in str:
    if i in keys:
        Alphabet[i] += 1

max = 0
index = ''
same = False

for i in keys:
    if Alphabet[i] > max:
        max = Alphabet[i]
        index = i
        same = False
    elif Alphabet[i] == max:
        same = True

if same:
    print("?")
else:
    print(index)

 

풀이

1. 알파벳 키 입력

2. 알파벳 딕셔너리에 키를 넣고 value값 0으로 초기화

3. 대문자로 변환한 문장을 입력받는다.

4. 그리고 존재하는 철자마다 +1해준다.

5. 이제 가장 많은 철자를 구해주면 되는데 여러 개인 경우 ?를 출력해야 해서 boolean 변수를 사용했다.
6. 개수가 같은 철자가 여러 개면 ?를 출력하고 아니면 max인 키값을 출력한다.