알고리즘 연습/구현, 문자열

[🥉2 / 백준 1371 / 파이썬] 가장 많은 글자

김세진 2021. 9. 1. 19:54
반응형

 

 

1371번: 가장 많은 글자

첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.

www.acmicpc.net

 

문제

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

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

입력

첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.

출력

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

 

예제 입력 1

english is a west germanic
language originating in england
and is the first language for
most people in the united
kingdom the united states
canada australia new zealand
ireland and the anglophone
caribbean it is used
extensively as a second
language and as an official
language throughout the world
especially in common wealth
countries and in many
international organizations

예제 출력 1

a













예제 입력 2

baekjoon online judge

예제 출력 2 

eno

 

풀이

 

가장 많이 입력 받은 글자를 출력하는 문제이다.

 

다만, 줄 수가 입력에 있지 않아 끝내는 시점이 명확하지 않다.

따라서 줄 수 대신 텍스트를 한 번에 입력받을 수 있는 sys.stdin.read() 함수를 사용한다.

이후 공백과 개행 문자를 없애주고, 알파벳을 카운트한다.

 

카운트를 완료한 후에는 가장 큰 수를 세고,

동일한 수의 알파벳이 여러 개 있을 수 있으므로 순회하며 배열에 넣어준다.

그리고 배열을 정렬한 뒤 공백없이 출력하면 된다.

 

import sys
input = sys.stdin.read

s = input().replace("\n","").replace(" ","")
c = [0] * 26
for i in s:
    c[ord(i)-97]+=1
    
maxx = max(c)
r = []
for i in range(len(c)):
    if c[i] == maxx:
        r.append(chr(i+97))
        
r.sort()
print(*r,sep="")
반응형