Python/이것이코딩테스트다with파이썬

7강 :: 기본 입출력

묘걍 2023. 11. 2. 17:46

👉🏻 기본 입출력

  • 모든 프로그램은 적절한 (약속된) 입출력 양식을 가지고 있다
  • 프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것이다
    • 사용자로부터
    • 문제에 정의된 규칙대로 프로그램 입력이 주어짐
  • 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