[백준]B2-1371

oxllz·2022년 2월 18일
0

백준-브론즈

목록 보기
45/65
post-thumbnail

문제

영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다.

어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오.


입력

첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이상 있다.


출력

첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.


풀이

import sys
a = sys.stdin.read()
res = [0]*26

for i in a:
    if i.islower():
        res[ord(i)-97] += 1
for i in range(len(res)):
	# max 값은 int 이므로 최댓값과 같은 값을 가진 위치의 문자 출력
    if res[i] == max(res):
        print(chr(i+97), end='')

sys.stdin.read() : 여러줄을 입력받기 위해 사용했으나 어떻게 종료시키는지 몰라 조금 헤맸다. 파이참에서 Ctrl+d 로 EOF (End Of File) 를 명시해주니 종료시킬 수 있었다.

islower() : 문자열 전체가 소문자인지 판단해주고 True / False 로 리턴해준다.

chr() : 아스키 코드 -> 문자열
ord() : 문자열 -> 아스키코드

  • a : 97 - z : 122
  • A : 65 - Z : 90
>>> ord('a')
97

>>> ord('z')
122

이므로 크기가 26인 리스트를 선언해준다.

0개의 댓글