❤️🔥TIL : Today I Learned❤️🔥
그날그날 내가 공부한 것을 정리하는 것
내일배움캠프 AI트랙 48day
오늘 배운 내용 - 알고리즘문제 입출력
내일은 토끼반 알고리즘 스터디 날이다. 프로젝트가 어제끝나서 오늘 처음 코딩 테스트 문제를 호기롭게 도전했는데, 문제보다 나를 가장 당황스럽게 만들었던 요소는 입출력 처리 였다.
프로그래머스에서는 입력값을 따로 안줘도 함수만 작성해도 되었지만 코딩을 실제 python 파일에 할려니깐 입출력을 고민하게 되었다. 또 실제 알고리즘 코딩테스트에는 단순히 함수만 구현하게 하지는 않을것 같다.
입력방식 01 - input() Function
input() 함수의 경우 사용자의 입력을 읽어온 후, 아래와 같은 처리 과정을 거친다.
- 먼저, 프롬프트로부터 사용자의 입력을 받음.
- 입력 받은 값 중에서, 개행문자 \n 를 제거함.
- 이후 해당 값을 문자열로 변경한 후, 이를 return 함.
또한 input() 함수의 경우, 더 이상 입력이 주어지지 않을 때 EOFError 를 띄운다.
입력방식 02 - sys.stdin Object
sys.stdin 은 input() 함수와 달리 File Object, 즉 하나의 객체이다.
하단의 코드를 실행시켰을 경우, sys.stdin 객체의 속성을 열람할 수 있다.
dir(sys.stdin)
>>> ['_CHUNK_SIZE', '__class__', '__del__', '__delattr__',
'__dict__', '__dir__', ..., 'write', 'writelines']
그리고 readline 의 경우 sys.stdin 객체에서 지원하는 메소드이다.또한 readline 은 EOF 에 도달할 시 에러가 아닌 빈 문자열을 반환한다.
주의할 점은, readline 의 경우 개행문자 \n 까지 받아온다는 점이다. 따라서 이를 제거하고 싶다면 strip() 함수를 추가로 실행해주어야 한다.
결론
input() 보다는, sys 라이브러리에서 제공하는 sys.stdin.readline() 를 사용하자.
input() 함수는 사용자의 입력을 받아 문자열로 변환시키는 과정이 필요하지만,sys.stdin 의 경우 사용자의 입력을 Buffer 에 저장한 후 요청이 올때마다 읽기 때문에 더 빠르게 동작하는 것이다.불필요한 전처리 과정 없이 바로바로 Buffer 에서 한 줄씩 값을 읽어오기만 하면 되니까.
import sys
read = sys.stdin.readline
count = int(read())
data = [sum(map(int, read().split())) for _ in range(count)]
for x in data:
print(x)
'I learned' 카테고리의 다른 글
내일배움캠프 AI트랙 11 Week (0) | 2022.11.13 |
---|---|
내일배움캠프 AI - TIL 50 (0) | 2022.11.13 |
내일배움캠프 AI - TIL 46 (0) | 2022.11.08 |
내일배움캠프 AI트랙 10 Week (0) | 2022.11.06 |
내일배움캠프 AI - TIL 45 (0) | 2022.11.06 |