본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Bronze II)

백준 / 1371번 / 가장 많은 글자 / Python / 구현, 문자열, stdin.read()

728x90

📚문제

출처 : 백준 1371번(https://www.acmicpc.net/problem/1371)


📝풀이

# 1371번 가장 많은 글자(BronzeII)
import sys
sentence,alphabet = sys.stdin.read(), [0]*26

for i in sentence:
    if i != ' ':
        alphabet[ord(i)-97] += 1
for j in range(len(alphabet)):
    if alphabet[j] == max(alphabet):
        print(chr(j+97),end='')

 

입력의 개수가 주어지지 않고 최대만 주어져있는 문제이다

 

EOFError로 풀려고했는데

EOFError를 사용하려면 sys.stdin.readline()를 사용할 수 없고 input()만 사용해야한다

때문에 시간초과에 걸리게 된다...

 

그리고 이 방법이 훨씬 간단하다

기존에는 입력을 받을 때는 한 줄씩 받았기 때문에 

개행문자를 포함한 sys.stdin.readline() 함수를 사용했는데

 

sys.stdin.read()를 사용하면

파일의 끝까지 한번에 모두 읽어보고 읽는대로 출력할 수 있다

 

sys.stdin.read()는 

파일 전체(입력 스트림의 끝)를 문자열 하나로 취급하여 가져온다(개행문자도 포함)

참고링크 출처 : https://velog.io/@nang_zz/Python-sys.stdin.readline-readlines-read-%EC%B0%A8%EC%9D%B4

 

따라서 EOF Error를 고려하지 않아도

읽는 그대로 가져와서 

코드를 작성할 수 있다

 

 

 

 

728x90