https://www.acmicpc.net/problem/1371
1371번: 가장 많은 글자
첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이
www.acmicpc.net
Problem
- 영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다.
- 어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오.
조건
- 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이상 있다.
- 첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.
SOL
쉬운 문제이지만, 문자열 처리를 위해서 짚어야하는 개념들이 상당히 잘 들어있는 문제이다.
파이썬에서 문자를 EOF(End of File)까지 입력 받는방법
- 1. sys.stdin.read() 이용하기
- 입력받을때, sys.stdin.read()를하게되면, EOF까지 모든 문자열을 입력받을 수 있다.
- 2. Try,except 구문 이용하기
- 무한반복문을 이용해서, EOF error가 발생하면 break 해주기.
알파벳을 아스키 코드를 이용해서, 배열에 담기
문자열을 다룰때, 많이 쓰는 테크닉 중 하나이다. 아스키코드 "97 ==a ,65==A" 라는건 기억하고 있는게 좋다.
- 문자열 -> 아스키 코드 : ord(문자열)
- 아스키코드 ->문자열 : chr(아스키코드)
import sys
lines=sys.stdin.read()
alphabet=[0 for _ in range(26)]
for line in lines:
if line.islower():
alphabet[ord(line)-97]+=1
for i in range(26):
if alphabet[i]==max(alphabet):
print(chr(i+97),end="")
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/21608/파이썬] 상어 초등학교 (0) | 2022.02.27 |
---|---|
[백준/11659/파이썬] 구간 합 구하기 4 (0) | 2022.02.27 |
[백준/9205/파이썬] 맥주 마시면서 걸어가기 (0) | 2022.02.26 |
[백준/14891/파이썬] 톱니바퀴 (0) | 2022.02.26 |
[백준/1547/파이썬] 공 (0) | 2022.02.25 |