일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 토이프로젝트
- 백준
- 오라클
- 데이터프로그래밍
- 스파크
- SQL 정리
- MySQL
- 코딩테스트
- 빅데이터
- 데이터베이스
- c언어
- 리눅스마스터 2급 2차
- 모의해킹
- 위클리챌린지
- SQL 문법
- 문법
- 스프링부트
- 문제풀이
- 자바
- 스프링
- 알고리즘
- 기초
- 필기
- 해킹실습
- 엘라스틱서치
- SQL
- 프로그래밍
- 이클립스
- 파이썬
- 프로그래머스
- Today
- Total
개발일기
백준 1371번 파이썬 풀이 : 가장 많은 글자 본문
문제 링크 : https://www.acmicpc.net/problem/1371
1371번: 가장 많은 글자
첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.
www.acmicpc.net
문제
영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다.
어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다.
출력
첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.
# 문제 풀이 ( 알고리즘 분류 : 문자열 )
파이썬에서 문자열을 입력받을 때 eof 날때까지 입력받는 방법에는 2가지가 있다.
1
2
3
4
5
6
7
8
9
10
11
|
#sys read
import sys
line = sys.stdin.read()
#try except
line = ''
while True:
try:
line = input()
except EOFError:
break
|
cs |
sys를 사용하는 방법과 try except를 사용하는 방법 총 2가지가 있다.
1
2
3
4
|
import sys
s = sys.stdin.read()
li = [0]*26
|
cs |
sys를 사용하여 문장 전체를 입력 받으며 li 배열에 카운트하기 위해서 알파뱃의 개수인 26개 만큼 만들어 준다.
1
2
3
|
for c in s:
if c.islower():
li[ord(c)-97] += 1
|
cs |
단어 하나씩을 카운트하며 소문자로 변환 후 아스키코드 변환 a의 아스키 코드인 97을 빼주게 되면 a의 index가 0부터 시작이 되게 되며 카운트 할 수 있다.
1
2
3
|
for i in range(26):
if li[i] == max(li):
print(chr(97+i), end='')
|
cs |
0부터 25까지 반복하며 제일 많이 사용된 문자열을 출력하면된다.
여기서 max 를 사용하여도 되지만 일일이 반복한 이유는 제일 많이 사용된 문자열이 여러개일 경우 출력하기 힘들기 때문에 그냥 일일이 반복하였다.
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 2490번 파이썬 풀이 : 윷놀이 (0) | 2021.09.23 |
---|---|
백준 1864번 파이썬 풀이 : 문어 숫자 (0) | 2021.09.22 |
백준 1718번 파이썬 풀이 : 암호 (0) | 2021.09.20 |
백준 1236번 파이썬 풀이 : 성 지키기 (0) | 2021.09.17 |
백준 1120번 파이썬 풀이 : 문자열 (0) | 2021.09.15 |