[Python] 파이썬 sys.stdin.readline() 입력 받기

2024. 4. 2. 13:44· Languages/Python

반복문으로 여러 줄을 입력받는 경우 input()을 사용하면 시간초과가 발생할 수 있다.

따라서 시간 초과가 나지 않기 위해서는

sys.stdin.readline()을 사용해야 한다.

더보기

📌input()이 sys.stdin.readline()보다 느린 이유

1. input()은 매개변수로 prompt message를 받는다. (따라서 입력 받기 전에 prompt message를 출력해야 한다)

2. 입력받은 값의 개행 문자를 삭제시키고 반환한다.

예시)

import sys

T = int(input())
for i in range(T):
	a, b = map(int, sys.stdin.readline().split())
    print(a+b)

 

사용 전 import sys를 잊지 말자

 

 

💖 sys.stdin.readline() 사용법

 

- 한 개의 정수 입력 받을 때

import sys
a = int(sys.stdin.readline())

sys.stdin.readline()은 한 줄 단위로 입력받기 때문에 개행문자 "\n"을 같이 입력받는다.

만약 "Hello World!"를 입력했다면, "Hello World!\n"이 들어오기 때문에 개행문자를 제거해야 한다.

또한 변수 타입이 문자열 형태(str)로 저장되기 때문에, 정수로 사용하기 위해서 형변환을 거쳐야 한다.

 

import sys

input = sys.stdin.readline
x = int(input()) #sys.stdin.readline()과 같은 역할을 함. 시간 단축 가능

맨 앞에 이렇게 정의해두면

계속 sys.stdin.readline을 부르지 않고 평소 쓰던대로 input()을 사용해도 된다.

 

 

- 2개 이상의 정수를 한 줄에 입력받을 때

import sys

N, M = map(int, sys.stdin.readline().split())

map()을 이용하여 두 개 이상의 정수를 입력받을 수 있다.

또한 split()은 문자열을 나눠주는 함수이다. 괄호 안에 특정 값을 넣어주면 그 값을 기준으로 문자열을 나누고, 아무 값도 없다면 공백(스페이스, 탭, 엔터 등)을 기준으로 나눈다.

 

리스트로 반환하고 싶다면 map()을 list()로 감싸줘야 한다.

list()는 자료형을 리스트형으로 변환해준다.

 

 

- 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장할 때

import sys
data = []
n = int(sys.stdin.readline()) #2
for i in range(n):
	data.append(list(map(int, sys.stdin.readline().split()))) #3, 5

print(data) #[[3], [5]]

 

- 문자열 n줄을 입력받아 리스트에 저장할 때

import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(i)]

이 때 strip()은 문자열 맨 앞과 맨 끝의 공백문자를 제거한다.

 

https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline

 

[Python 문법] 파이썬 입력 받기(sys.stdin.readline)

파이썬으로 코딩 테스트를 준비한다면, 반드시 알아야 할 입력방식인 sys.stdin.readline()에 대한 정리 입니다.

velog.io

https://yeomss.tistory.com/120

 

Python sys.stdin.readline() 사용 / 알고리즘 입력 받기

주로 파이썬에선 알고리즘을 입력받을 때 input() 을 많이 씁니다. 하지만 input() 을 사용하면 종종 시간 초과 에러가 뜰 때가 있습니다. 이를 방지하기 위해서 사용하는 sys.stdin.input() 을 소개하고

yeomss.tistory.com

 

'Languages > Python' 카테고리의 다른 글

[Python] leetcode | 20. Valid Parentheses 괄호 짝 맞추기 | Stack  (0) 2024.05.26
[Python] 프로그래머스 | 같은 숫자는 싫어 | append  (0) 2024.05.24
[Python] [백준 #20291] Counter로 배열 요소 개수 세기  (0) 2024.05.10
[Python] [백준 #1764] 두 개의 set(집합) 중복 요소 출력하기  (0) 2024.05.10
[Python] 파이썬의 나누기(몫/나머지) // 연산자와 % 연산자  (0) 2023.04.10
'Languages/Python' 카테고리의 다른 글
  • [Python] 프로그래머스 | 같은 숫자는 싫어 | append
  • [Python] [백준 #20291] Counter로 배열 요소 개수 세기
  • [Python] [백준 #1764] 두 개의 set(집합) 중복 요소 출력하기
  • [Python] 파이썬의 나누기(몫/나머지) // 연산자와 % 연산자
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우리에프아이에스
  • 우리FISA
  • 클라우드 서비스
  • 인프라
  • 봐
  • 클라우드
  • 네트워크관리사2급 필기
  • 서버개발
  • 네트워크관리사2급
  • 코틀린문법
  • 서버생성
  • K-디지털트레이닝
  • 네트워크관리사2급 공부방법
  • 네트워크관리사 합격
  • nhn cloud
  • 인프라개발
  • 네트워크관리사 후기
  • 글로벌소프트웨어캠퍼스
  • 네트워크관리사 준비물
  • 서버배포
  • apppaas
  • 네트워크관리사 커트라인
  • 코틀린
  • 앱개발
  • rds local 접속
  • Kotlin
  • 클라우드서비스개발
  • 우리fis아카데미
  • AWS
  • 네트워크관리사

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[Python] 파이썬 sys.stdin.readline() 입력 받기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.