jyamethyst21 님의 블로그

백준 1371번- '가장 많은 글자' (PYTHON 풀이) 본문

CODING 💻

백준 1371번- '가장 많은 글자' (PYTHON 풀이)

jyamethyst21 2026. 1. 25. 00:31

문제:

 

글을 입력받고 이 중 가장 많이 쓰인 알파벳을 출력하면 되는 문제이다. 만약 중복되는 것이 있다면 알파벳 순으로 앞서는 것을 공백없이 출력하면 된다.

 

풀이:

import sys

text = sys.stdin.read()
alpha = {}
result = []

for i in range(97, 123):
    alpha[chr(i)] = 0

for j in text:
    if j in alpha:
        alpha[j] += 1

for key, value in alpha.items():
    if value == max(alpha.values()):
        result.append(key)
print(''.join(result))

 

필자는 처음에 input()으로 입력값을 받아서 틀렸었다. 일반적으로 input은 한줄씩 입력값을 받는 반면, 우리는 첫문장부터 끝까지 한번에 받아서 비교를 해야하기 때문에 sys 라이브러리 import 후, sys.stdin.read()를 사용했다.

그 다음 딕셔너리와 결과값을 저장할 리스트 한개를 선언한다. 이후 앞서 선언한 딕셔너리에 키, 값을 넣기 위해 반복문을 사용한다. 알파벳 비교가 필요함으로 아스키값인 숫자를 기준으로 for문을 활용해서 키를 만들고 모든 값을 0으로 초기화하였다.

 

그 후 입력값을 받은 text를 한자리씩 보면서 딕셔너리에 값을 1씩 더해준다. 이 과정을 반복하면 딕셔너리에는 각 소문자의 등장횟수에 맞게 값이 추가되어 있을 것이다.

 

마지막으로 가장 큰 value에 해당하는 키를 추출하기 위해 items()를 썼다. items는 딕셔너리의 키, 값을 뽑을 수 있기 때문에 위와 같이 for문을 돌려서, 가장 큰 값에 해당하는 값이라면 그 키를 result에 추가하도록 하였다 여기까지 돌면 result에는 가장 큰 값들의 키만 모여있을 것이다.

그 다음 마지막으로 출력 형식에 맞게 result를 뽑아서 출력하면 문제를 풀 수 있다!