import sys

이지훈·2021년 9월 16일
0

백준 문제를 풀다가 imput으로는 시간이 너무 많이 드는 것을 보고 시간을 단축시킬 방법이 뭔지 궁금했다.

결과부터 말하면 입력 시 input 대신 sys 모듈을 import해서 사용하는 것이다.

다음과 같이 시간이 확 줄어든 것을 볼 수 있었다.

사용방법은 간단하다. import하고 sys.stdin.readline() 라고 입력하는 것이다.

 import sys

for _ in range(3):
    n = int(input())
    a = [int(input()) for i in range(n)]

    if sum(a) == 0:
        print(0)
    elif sum(a) > 0:
        print("+")
    elif sum(a) < 0:
        print("-")
import sys

for _ in range(3):
    n = int(sys.stdin.readline())
    a = [int(sys.stdin.readline()) for i in range(n)]

    if sum(a) == 0:
        print(0)
    elif sum(a) > 0:
        print("+")
    elif sum(a) < 0:
        print("-")

그럼 이 둘의 차이는 무엇일까?

input은 입력을 무조건 문자열로 받는다. 정수를 입력해도 말이다.

a = input()
print(type(a))

sys = system
stdin = standard input
(표준적으로 입력으로 받고 출력으로 보내는 데이터와 매체 총칭이다. 유닉스 쉘에서는 표준 입력이 키보드로 설정되어 있으므로 입력받는 매체는 키보드가 된다.)
readline = 한 줄씩 입력받는다.

1. 차이점 prompt message

input 내장 함수는 parameter로 prompt message를 받을 수 있다. 입력받기 전 prompt message를 출력해야하는데, sys.stdin,readline은 prompt message를 인수로 받지 않는다.

  • 프롬프트 메시지란 사용자가 프롬프트에서 명령어를 입력하는 과정에서 작업 치리에 필요한 정보가 누락된 경우, 명령어에서 필요로하는 정보를 추가로 입력받기 위하여 사용자에게 출력하는 메시지를 뜻한다.

2. 개행문자

input은 rstrip() (문자열의 끝에 있는 공백을 제거)하는 메소드가 포함되어 있다. 반면에 sys 모듈은 포함되어 있지 않아서 입력시 맨 뒤의 공백이 같이 입력될 수 있다는 단점이 있다.

profile
꾸준하게 🐌

0개의 댓글