kwan's note

백준-2751번 파이썬 input() vs sys.stdin.readline() 본문

Algorithm/python

백준-2751번 파이썬 input() vs sys.stdin.readline()

kwan's note 2021. 1. 10. 22:05
반응형

문제: 백준 2751번

난이도: 실버5

 

난이도는 실버5지만 파이썬으로는 아주 쉬운 sort문제이다.

 

다만 첫 시도에서 시간초과가 떠서 다른 코드를 보던중 input()이 아닌 sys.stdin.readline()을 사용하여

통과한것을 봤고 이것만 바꿔서 작성했더니 통과하였다.

 

이러한 차이는 input과 sys.stdin.readline과의 차이에서 발생했는데

input 은 parameter에 prompt message를 받을 수 있어 입력받기 전 prompt message를 출력한다. 아무것도 적지 않더라도 말이다.하지만, sys.stdin.realine()은 prompt message를 받지 않는다.

여기서 속도차이가 발생한다.

 

한가지 추가적인 차이점은 ​input()은 입력받은 값의 개행 문자(\n)를 삭제시켜서 리턴하고

sys.stdin.readline은 개행 문자(줄바꿈 문자)를 포함한 값을 리턴한다. 따라서 rstrip으로 삭제하여 준다.

 

 

 

def Sort(number):
    Sortlist=[]
    for i in range(number):
        Sortlist.append(int(input()))
    Sortlist.sort()
    for j in range(number):
        print(Sortlist[j])


if __name__ == "__main__":
    Nsort = int(input())
    Sort(Nsort)

시간 초과로 통과에 실패한 코드

 

import sys

def Sort(number):
    Sortlist=[]
    for i in range(number):
        Sortlist.append(int(sys.stdin.readline().rstrip()))
    Sortlist.sort()
    for j in range(number):
        print(Sortlist[j])


if __name__ == "__main__":
    Nsort = int(sys.stdin.readline().rstrip())
    Sort(Nsort)

통과한 코드

 

반응형