본문 바로가기
● 알고리즘, 자료구조/2019 알고리즘

★ 백준 15552 파이썬 / for / 입출력 방식 빠르게(sys.stdin.readline) 오버타임 방지

by 0ver-grow 2019. 8. 5.
반응형

input()을 이용하면 프롬프트를 이용한 입력을 받을 수 있고, 형변환이 되는 이점이 있다.
대량의 데이터를 반복적으로 입력받을 때 input()을 이용하지 않고, sys.stdin.readline() 을 이용하면 성능이 향상
자바에서 Scanner를 이용한 입력보다 BufferedReader 를 이용한 입력이 빠른것처럼 
파이썬도 input()을 이용하는 것보다 sys.stdin.readline()을
 이용하는 것이 훨씬 빠르다.

Python

rstrip을 하라는 건 문자열 자체를 변수에 저장하고 싶을 때 얘기지, 개행문자가 맨 끝에 들어와도 int 변환이나 split()을 그대로 할 수 있습니다. 즉 int(sys.stdin.readline()), sys.stdin.readline().split() 이렇게 해도 아무 문제 없습니다. 참고로 이름이 꽤 길기 때문에 저는 input = sys.stdin.readline을 맨 처음에 함으로써 쓰는 편입니다.

풀이1. 입력값을 리스트에 한번에 쌓아서 출력하기

import sys 

input = sys.stdin.readline 
T = int(input()) 
result_arr = [] 

for i in range(1,T+1) : 
    A,B = map(int,input().split()) 
    result_arr.append(A+B) 

for i in range(len(result_arr)) :  
    print(result_arr[i])

풀이2. 입력과 동시에 출력하기

import sys
  
T = sys.stdin.readline() # T의 타입은 현재 str
  
for Repeat in range(0, int(T)): # T를 int로 바꿔서 for반복횟수로 씀. 
  #  num = T.split() 로 하면 런타임에러 발생
  num = sys.stdin.readline().split() # split()을 넣어서 띄워쓰기 기준으로 구분
  print(int(num[0]) + int(num[1])) # 배열을 int로 반환해서 더할 수 있도록함

 

오류발생 : map을 사용하지 않았음


input = sys.stdin.readline
T = int(input())
A,B = int(input().split())

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

반응형