INPUT()
정수 하나 입력받기
N = int(input())
특정 개수의 정수
N,M = map(int,input().split())
map(function,iterable)
- 첫번째 매개변수는 적용시킬 함수, 두 번째 매개변수는 반복가능한 자료형(리스트, 튜플 등)
- map 함수의 반환 값은 map 객체라서 list나 tuple로 형 변환을 시켜주어야 함.
- 함수는 int와 타입, 람다함수, 일반 함수 모두 가능
쉽게 말하자면, map(func,x)함수는 리스트 같은 x의 각 요소에 func을 적용시켜주는 함수이다.
a = map(int, input().split())
10 20을 입력하고 a를 출력시켜보면
<map object at 0x03DFB0D0>와 같은 결과값이 나오지만,
list(a)을 출력시켜보면
[10, 20] 가 출력되는 것을 확인할 수 있다.
즉, a에 10 20 을 입력하면 map 객체가 만들어진다는 것을 알수 있다.
아래와 같이 list로 변환해줘야 정상적인 결과가 나오게 된다.
a = list(map(int, input().split()))
1차원 배열(리스트) 입력
Arr=list(map(int,input().split()))
N을 입력받아 N개의 줄을 입력하기(1차원 배열 입력받기)
N=int(input())
Arr=[int(input()) for _ in range(N)]
N을 입력받아 N개의 줄을 입력하기(2차원 배열 입력받기)
N=int(input())
Arr=[]
for i in range(0,N):
Arr.append(list(map(int, input().split())))
N=int(input())
Arr=[list(map(int, input().split())) for _ in range(n)]
누가 알려주는 사람이 없어서,
처음 2차원 배열을 입력받을때 위와 같이 했지만, 파이썬을 공부하면서 아래와 같이 간결하게 바꼈다.
sys.stdin.readline()
input()을 이용한 이용 방식에는 시간초과가 발생할 수 있다. (아래 백준 문제 참고)
https://www.acmicpc.net/problem/15552
파이썬의 입력을 좀더 빠르게 하기 위해서 input대신, readline함수를 사용해야 한다.
실제로 input()은 입력만 받는게 아니라 내부에서 가공하는 과정이 추가되어서 생각보다 많이 느리다는 점 !
이 방식을 이용하기 위해서는 코드 첫줄에 import sys 코드를 통하여 모듈을 가져오기만 하면 된다!
import sys
a = sys.stdin.readline()
기본적으로 readline()은 개행문자(줄바꿈문자)를 포함하고 있어서, 문자열 마지막에 개행문자가 포함되어 출력된다.
아래의 함수와 함께 쓰면 공백없이 출력이 가능하다.
- strip() : 문자열 앞과 끝의 공백문자를 제거해주는 함수
- lstrip() : 문자열 앞의 공백문자를 제거해주는 함수
- rstrip() : 문자열 끝의 공백문자를 제거해주는 함수
예시
import sys
a = sys.stdin.readline()
a=list(a)
print("readline",a)
b = sys.stdin.readline().rstrip()
b=list(b)
print("rstrip",b)
c = sys.stdin.readline().lstrip()
c=list(c)
print("lstrip",c)
d = sys.stdin.readline().strip()
d=list(d)
print("strip",d)
결과값 (∨∨123∨456∨ 입력시)
readline [' ', ' ', '1', '2', '3', ' ', '4', '5', '6', ' ', '\n']
rstrip [' ', ' ', '1', '2', '3', ' ', '4', '5', '6']
lstrip ['1', '2', '3', ' ', '4', '5', '6', ' ', '\n']
strip ['1', '2', '3', ' ', '4', '5', '6']
사용방법
sys라이브러리를 사용할때는 한 줄 입력받고 rstrip()을 호출해야한다.
\n도 받으므로, 개행문자를 제거하는 역할이다.
sys.stdin.readline().rstrip() 하나하나 다 치게되면 너무 길고 코드가 못생겨지는 단점이 있다 .. -_-
그래서 함수로 만들어서 사용 하기로 한다고 코치님께 들었다.
import sys
def input():
return sys.stdin.readline().rstrip()
위와 같이 함수로 만들어서 필요할때마다 input()을 호출하여 기존의 input()처럼 사용하면 될듯 하다