파이썬에서는 데이터를 입력 받을 때는 input()
을 사용
input()
의 경우 한 줄의 문자열을 입력받도록 해준다.
만약 파이썬에서 입력받은 데이터를 정수형 데이터로 처리하기 위해서는 문자열을 정수로 바꾸는 int()
함수를 사용해야 한다. -> int(input())
여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다.
그래서 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높다. 이때는 list(map(int, input().split()))
을 이용하면 된다.
list(map(int, input(). split()))
의 동작 과정을 알아보자.
가장 먼저 input()
으로 입력받은 문자열을 split()
을 이용해 공백으로 나눈 리스트로 바꾼 뒤에, map을 이용하여 해당 리스트의 모든 원소에 int()
함수를 적용한다.
최종적으로 그 결과를 list()
로 다시 바꿈으로써 입력받은 문자열을 띄어쓰기로 구분하여 각각 숫자 자료형으로 저장하게 되는 것이다.
plans = input().split()
plans라는 배열에 띄어쓰기로 구분된 char 또는 string 타입의 원소들이 들어간다.
파이썬에서는 구분자가 줄 바꿈인지 공백인지에 따라서 다른 처리를 요구한다.
줄 바꿈이라면 int(input())
을 여러 번 사용하면 되는데,
공백이라면 아래와 같이 사용해야 하므로 구분해서 알아두자.
# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백으로 구분하여 입력
data = list(map(int, input().split()))
data.sort(reverse = True)
print(data)
공백으로 구분된 데이터의 개수가 많지 않다면, 단순히 map(int, input().split())
을 이용하는 것도 가능하다.
예를 들어 문제에서 첫째 줄에 n,m,k가 공백으로 구분되어 입력된다는 내용이 명시되어 있다고 가정하자. 이 경우에는 다음과 같이 사용할 수 있다.
# n, m, k를 공백으로 구분하여 입력
n, m, k = map(int, input().split())
print(n, m, k)
코딩 테스트 중에서는 빠른 입력이 필요한 경우 있다.
input() 함수가 동작 속도가 느리기 때문.
이 경우 파이썬의 sys 라이브러리에 정의되어 있는 sys.stdin.readline()
함수를 이용한다. sys 라이브러리는 다음과 같은 방식으로 사용하며 input()
함수와 같이 한 줄씩 입력받기 위해 사용한다.
import sys
sys.stdin.readline().rstrip()
sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip()
함수를 꼭 호출해야 한다.
readline()
으로 입력하면 입력 후 엔터가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하려면 rstrip()
함수를 사용해야 한다.
readline()
사용 소스코드 예시
import sys
# 문자열 입력받기
data = sys.stdin.readline().rstrip()
print(data)