문제 설명: 첫 줄에 반복할 횟수(최대 1,000,000)를 입력, 해당되는 횟수만큼 2개의 정수(1이상, 1000이하)를 입력하면 그 둘의 합을 출력한다.
위에 보시면 Python의 경우 input() 대신 sys.stdin.readline()을 사용하라고 나와있습니다.
이유는 input() 으로는 속도의 한계가 있어서입니다. 아래 두 가지를 비교 정리해 뒀으니 참고 바랍니다.
* input() vs. sys.stdin.readline()
ㄱ. input의 경우 사용자로부터 입력을 받은 후 입력받은 표현식을 분류합니다.(이 때, 입력받기 전까지 프로그램 흐름 중지)
Python은 사용자가 입력한 것이 str인지 int인지 list인지 자동으로 분류하는데, 입력한 형식이 맞지 않는다면 오류를 출력한다.
eg) '나는 바보' 와 같은 string(문자열) 을 input() 함수에 넣으면서 타입을 int() 로 지정하면 오류가 발생한다.
이 때, 입력받은 표현식을 문자열로 변환한 후, 타입 캐스팅(내가 표현식에 지정해서 넣은 타입)을 사용하여 정수로 변환해야 합니다.
정리하면, 입력한 표현식 문자열로 변환 후 타입 캐스팅으로 int로 재변환해야하므로 다량의 반복이 들어갈 경우 런타임 에러가 발생
ㄴ. sys.stdin.은 파일 객체로 이 메서드는 사용자가 입력 한 이스케이프 문자도 읽으므로 input () 메서드와 약간 다릅니다.
뒤에 read() 나 readlines() 를 붙여서 한 줄 씩 읽거나 한번에 다 읽거나 할 수도 있습니다. 따라서 input()과 달리 입력 프롬포트 미노출
중요한 건 , sys안에 있는 객체를 사용하는 것이므로 사용하기 전 sys를 import 해줘야 한다,
정답 코드
* 백준 포스팅 원칙 : 풀었지만 다음에 못 풀 것 같은 문제 / 구글의 도움을 받은 문제 / 나중에 보면 도움 받을 것 같은 문제 포스팅
https://link.coupang.com/a/rGILU
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 10828번 :스택 파이썬(Python) 풀이 (1) | 2021.04.21 |
---|---|
[백준] 1110번 :더하기 사이클 파이썬(Python) 풀이 (0) | 2020.12.27 |
[백준]10871번 : X보다 작은 수 파이썬 (0) | 2020.12.18 |
[백준] 14681번 :사분면 고르기 파이썬(Python) 풀이 (0) | 2020.12.17 |