7강 :: 기본 입출력
👉🏻 기본 입출력
- 모든 프로그램은 적절한 (약속된) 입출력 양식을 가지고 있다
- 프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것이다
- 사용자로부터
- 문제에 정의된 규칙대로 프로그램 입력이 주어짐
- Ex. 학생의 성적 데이터가 주어지고, 이를 내림차순으로 정렬한 결과를 출력하는 프로그램
- 학생이 몇 명인지 (학생 수)
- 각 학생의 성적 정보 - 공백으로 구분되어 입력
🧩 자주 사용되는 표준 입력 방법
- input() 함수는 한 줄의 문자열을 입력 받는 함수이다
- map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용한다
- Ex. 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용한다
- list(map(int, input().split()))
- 먼저 입력을 받고, 공백 기준으로 구분을 하고, 그것들을 전부 정수형으로 바꿔준 뒤, 리스트로 만들어준다
- 앞으로 자주 사용될 것이기 때문에 손에 익게 하기
- 문제 초반에 데이터 입력 받을 때 사용하기
- 입력 받은 데이터를 정수로 바꿔주려면 int()로 감싸주면 된다
* 공백을 기준으로 나누지 않았을 때
* 공백을 기준으로 나눴을 때
- 각각의 문자열이 나눠져 리스트로 만들어짐
- 하지만 각각의 데이터가 문자열로 되어있음
- 이때 이것을 map 함수를 통해 각각을 int 형으로 만들어주고
- 이것을 다시 list형으로 만들어준 것이 위의 최종 코드
- Ex. 공백을 기준으로 구분된 데이터의 개수가 많지 않다면, 단순히 다음과 같이 사용한다
- a, b, c = map(int, input().split())
- 리스트로 치환하지 않고 a, b, c 각각에 넣어준다
- 반드시 데이터가 n개 들어온다고 정해져 있다면 이 방법을 채택
* 만약 n개 이상의 데이터가 입력되면?
- 당연히 오류가 난다
- 네 개의 데이터를 받아서 하나의 묶음으로 만듦 (= 패킹)
- 이것을 다시 차례대로 변수에다 하나씩 언패킹을 해줘야하는데 갯수가 맞지 않아
🧩 빠르게 입력 받기
- 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우가 있다
- 파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용한다.
- 단, 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드를 함께 사용한다.
- 단순히 input() 함수를 사용할 때 보다 더 빠르게 사용자로부터 입력받을 수 있다.
- 오른쪽에 붙은 줄바꿈 기호는 제거해줘야 한다.
- 단순히 입력을 받는 것 만으로도 많은 시간이 소요되어 시간 초과 판정을 받을 수도 있다.
- 이진탐색, 정렬, 그래프 관련 문제에서 자주 사용
🧩 자주 사용되는 표준 출력 방법
- 파이썬에서 기분 출력은 print() 함수를 이용한다.
- 각 변수를 콤마(,)를 이용하여 띄어쓰기로 구분하여 출력할 수 있다.
- print()는 기본적으로 출력 이후에 줄바꿈을 수행한다.
- 줄 바꿈을 원치 않는 경우 'end' 속성을 이용할 수 있다.
- 내장함수
- a와 b에 할당된 1과 2는 공백을 기준으로 구분되어 출력
- 이후 줄바꿈이 발생했다
- 7과 8을 출력할 것인데 end 속성을 통해 줄바꿈이 발생하지 않도록 공백 문자를 넣어줌
- 7 출력 후 줄바꿈이 아닌 한 칸 띄움
- 8 출력 후 줄바꿈이 아닌 한 칸 띄움
- 파이썬은 문자열과 정수형의 직접적인 + 연산을 수행할 수 없기 때문에 정수를 string으로 만들어준다.
👉🏻 f-string 예제
- 파이썬 3.6부터 사용 가능하며, 문자열 앞에 접두사 'f'를 붙여 사용한다.
- 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있다.
출처: https://youtu.be/EmVu4na4fRY?si=ilDUbiiX7EovT1fY