[python]입력 받기

Yu River·2022년 6월 15일
0

1. sys.stdin.readline

import sys

T = int(input())
for i in range(T):
        a,b = map(int, sys.stdin.readline().split())
        print(a+b)
  • 반복문으로 여러줄을 입력 받아야 할 때는 input()으로 입력 받는다면 시간초과가 발생할 수 있다.
  • 반복문으로 여러줄 입력받을 땐 sys.stdin.readline()을 사용해야 시간초과되지 않는다.

1) 한 개의 정수를 입력 받기

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

print(a)
>> 입력
1
>> 출력
1
  • sys.stdin.readline()은 한줄 단위로 입력받기 때문에, 개행문자가 같이 입력된다.
    • 만약 1을 입력했다면, 1\n 이 저장되기 때문에, 개행문자를 제거해야 한다.개행문자를 제거하려면, .rstrip()을 붙여주면 된다.
  • 변수 타입이 문자열 형태(str)로 저장되기 때문에, 정수로 사용하기 위해서 형변환을 거쳐야 한다.

2) 정해진 개수의 정수를 한줄에 입력받기

import sys

a,b,c = map(int,sys.stdin.readline().split())
  • a,b,c에 대해 각각 int형으로 형변환 되었다.
  • map()은 반복 가능한 객체(리스트 등)에 대해 각각의 요소들을 지정된 함수로 처리해주는 메소드이다.

3) 임의의 개수의 정수를 한줄에 입력받아 리스트에 저장하기

import sys
data = list(map(int,sys.stdin.readline().split()))

print(data)
>> 입력
1 2 3 4 5

>> 출력
[1, 2, 3, 4, 5]
  • split()은 문자열을 나눠주는 메소드이다.
  • 괄호 안에 특정 값을 넣어주면 그 값을 기준으로 문자열을 나누고, 아무 값도 넣어주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 나눈다.
  • list()는 자료형을 리스트형으로 변환해주는 함수다.
  • map()은 맵 객체를 만든다.

4-1) 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장하기(1)

import sys

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

print(data)
>> 입력
3
1 2 3 
4 5 6
7 8 9

>> 출력
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

이렇게 한다면 각 요소의 길이가 동일한 2차원 리스트도 만들 수 있고,
각각 길이가 다른 2차원 리스트도 입력 받을 수 있다.

4-2) 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장하기(2)

import sys

data = []
n = int(sys.stdin.readline())
data = [list(map(int, input().split())) for _ in range(n)]

print(data)
>> 입력
3
1 2 3 
4 5 6
7 8 9

>> 출력
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

이렇게 한다면 각 요소의 길이가 동일한 2차원 리스트도 만들 수 있고,
각각 길이가 다른 2차원 리스트도 입력 받을 수 있다.

5) 문자열 n줄을 입력받아 리스트에 저장하기

import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
>> 입력
3
안녕
하세요 !
룰루리 랄라

>> 출력
['안녕', '하세요 !', '룰루리 랄라']
  • strip()은 문자열 맨 앞과 맨 끝의 공백문자를 제거한다.

https://developeryuseon.tistory.com/90

profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글