본문 바로가기
코딩테스트/utility

파이썬 입력 받기 / input()과 sys.stidin.readline() 사용

by anjulia 2023. 8. 6.

입력 받기 이전에 필요한 파이썬 함수들 , 기본개념

map() 

map()은 iterable (순회 가능한) 객체의 모든 항목에 함수를 적용하여 결과를 리턴한다. 

 

💡iterable한 객체

- 반복 가능한 객체

- 파이썬에서는 list, tuple, set, dictionary, str, range 등

 

💡iterator

- 반복문을 이용해  데이터를 순회하며 처리

- iterator가 데이터를 처리하려면 iterable한 객체라는 조건이 필요

 

a = map(int, ['1','2','3'])
>> a
[1,2,3]

function -> int 함수

iterable한 객체 -> ['1','2','3']

int 함수를 iterable한 객체에 각각 적용해서 결과를 리턴한다.

 

split()

문자열을 분할 후 리스트로 리턴하는 함수이다. 

함수의 sep파라미터는 구분자 역할을 한다.

이 구분자를 가지고 문자열을 분할 후 리스트로 리턴한다. 

디폴트로 None으로 설정 되어있고, 이것은 띄어쓰기 혹은 개행문자에 맞춰서 문자열을 분할 한다. 

 

 

공백 있는 정수 여러개 입력 받기 1 - input() 이용

a,b = map(int,input().split())

input()은 사용자로부터 입력을 받고 문자열로 저장한다. 

split()은 문자열을 띄어쓰기나 개행문자에 맞춰서 문자열을 분할 후 리스트로 리턴한다. 

map()은 리스트(순회 가능한 객체)에 있는 각각의 원소를 int 자료형으로 형변환한다.

 

 

하지만 반복문으로 여러 줄을 입력 받아야 할 때는 input()으로 입력을 받으면 시간초과가 발생할 수 있다. 

 

 

공백 있는 정수 여러개 입력 받기 2 - sys.stdin.readline() 이용

import sys
a,b = map(int, sys.stdin.readline().split())

 

sys.stdin.readline()

- 문자열로 입력을 받는다.

- 만약 "Hello S"라는 문자열을 입력 받았다면 "Hello S\n"가 sys.stdin.readline()의 입력으로 들어오게 된다.

 

예시)

문자열로 입력을 받는다. 

split()가 문자열을 띄어쓰기에 맞춰서 분할 후 리스트로 리턴한다.

map()가 리스트의 원소들을 int형으로 형변환 한 후 리턴한다.

리스트의 각 원소의 값들이 a,b에 저장이 된다. 

 

 

2차원 배열 입력받기 - sys.stdin.readline() 이용

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