[파이썬 개념] 입력

1. 입력

1) 데이터 하나를 입력받을 때

파이썬에서는 데이터를 입력 받을 때는 input()을 사용
input()의 경우 한 줄의 문자열을 입력받도록 해준다.
만약 파이썬에서 입력받은 데이터를 정수형 데이터로 처리하기 위해서는 문자열을 정수로 바꾸는 int() 함수를 사용해야 한다. -> int(input())

2) 데이터 여러 개를 입력받을 때

int 타입

여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다.
그래서 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높다. 이때는 list(map(int, input().split()))을 이용하면 된다.

list(map(int, input(). split()))의 동작 과정을 알아보자.
가장 먼저 input()으로 입력받은 문자열을 split()을 이용해 공백으로 나눈 리스트로 바꾼 뒤에, map을 이용하여 해당 리스트의 모든 원소에 int() 함수를 적용한다.
최종적으로 그 결과를 list()로 다시 바꿈으로써 입력받은 문자열을 띄어쓰기로 구분하여 각각 숫자 자료형으로 저장하게 되는 것이다.

char 또는 string 타입

plans = input().split()
plans라는 배열에 띄어쓰기로 구분된 char 또는 string 타입의 원소들이 들어간다.

3) 입력을 위한 전형적인 소스 코드

파이썬에서는 구분자가 줄 바꿈인지 공백인지에 따라서 다른 처리를 요구한다.
줄 바꿈이라면 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)

4) 빠른 입력

코딩 테스트 중에서는 빠른 입력이 필요한 경우 있다.
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)

좋은 웹페이지 즐겨찾기