-
[기능] 파이썬 stdin 입력Language Study/Python 2021. 4. 16. 06:24
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
일반적으로 입력을 받을 때에는 input()을 사용한다.
하지만 백준 15552번 빠른 A+B와 같은 문제를 해결할 때에는 input()으로 입력받는 경우에는 시간 초과가 발생한다.
이 때 impor sys를 하여 stdin으로 입력을 받는다면 시간초과를 발생시키지 않을 수 있다.sys.stdin.readline()
1. 정수 입력 받기
import sys number = int(sys.stdin.readline())
하나의 정수를 입력 받을 때에는 readline으로 입력받은 값을 int로 형변환을 해주면 된다.
(입력에 \n와 같은 개행문자가 있고 str로 저장되기 때문에 정수로 사용하기 위해서 int변환)import sys num1, num2 = map(int,sys.stdin.readline().split())
2개 이상의 정수를 입력 받을 때에는 map과 split을 이용할 수 있다.
map은 각 요소들을 지정된 함수로 처리해주는 기능이고
split()은 원하는 구분점을 기준으로 문자열을 나누는 기능을 수행한다.import sys num_list = list(map(int,sys.stdin.readline().split()))
한 번에 여러 정수를 입력 받아서 리스트에 저장하는 경우에는
map을 이용하여 생성된 map 객체를 list로 변환한 후 넣어주면 된다.import sys num_list = [] T = int(sys.stdin.readline()) # 반복 횟수 for i in range(T): num_list.append(list(map(int,sys.stdin.readline().split())))
임의의 정수를 T줄 입력 받아서 리스트에 저장하는 경우에는
반복되는 줄 수를 나타내는 T를 따로 입력 받은 후
for문을 이용하여 반복하면서 list에 위에서 사용한 것과 같은 방법으로 입력하면 된다.2. 문자열 입력 받기
import sys T = int(sys.stdin.readline()) str_list = [sys.stdin.readline().strip() for i in range(T)]
문자열을 T줄 입력 받는 경우에는 strip함수를 이용하여 문자열 앞 뒤에 있는 공백을 제거하고 리스트에 입력하면 된다.
3. 15552번 풀이
이 문제는 단순하게 입력 받은 것을 더해서 출력하면 되기 때문에
T = int(input()) #Test case for i in range(T): a,b = map(int, input().split()) print(a+b)
으로 풀어도 답이 나오지만 시간 초과가 발생한다.
import sys T = int(input()) #Test case for i in range(T): a,b = map(int, sys.stdin.readline().split()) print(a+b)
sys.stdin.realine() 을 이용하여 문제를 풀게되면 시간이 초과되지 않는 것을 알 수 있다.
'Language Study > Python' 카테고리의 다른 글
youtube 요약.01 - yt_dlp로 youtube 음성 파일 추출하기 (5) 2024.11.08 파이썬 문자 채우기, 0채우기 (1) 2024.07.23 [기능] 파이썬 순열, 조합 (Permutations, Combinations) (0) 2021.04.06 [기능] 파이썬 리스트 복사 (python copy) (0) 2021.04.01 [자료구조] collections module - deque (0) 2021.03.31