Baekjoon/단계별로 풀어보기

[백준][6단계 심화 1] 1157번 /단어 공부 (파이썬/Python)

junslee 2025. 3. 25. 17:34

1. 문제 설명

2. 풀이 과정

word에 입력 단어를 소문자로 변환하여 받는다.

숫자의 빈도값을 넣을 딕셔너리를 char_frequency에 초기화한다.

word에 있는 문자 char을 반복해서 받는다.

char.isalpha()로 각 문자가 알파벳인지 확인한다.

char이 char_frequency에 있다면 char_frequency[char]에 1을 더한다.

없다면 char_frequency[char]을 1로 초기화한다.

최대 빈도수를 찾기 위해 max_frequency값을 max( char_frequency.values())로 딕셔너리의 값들 중에서 찾는다.

최대 빈도수에 해당하는 알파벳을 찾기 위해 most_frequent_chars에 char_frequency.items()로 char과 freq를 찾아 freq == max_frequency일때의 char값을 넣는다.

most_frequent_chars값이 여러 개이면 "?"를 출력하고

아니면 most_frequent_chars값을 대문자upper()로 출력한다.

3. 코드

word = input().lower()

char_frequency = {}
for char in word:
    if char.isalpha():
        if char in char_frequency:
            char_frequency[char] += 1
        else:
            char_frequency[char] = 1

max_frequency = max(char_frequency.values())
most_frequent_chars = [char for char, freq in char_frequency.items() if freq == max_frequency]

if len(most_frequent_chars) > 1:
    print("?")
else:
    print(most_frequent_chars[0].upper())