[Python] 코딩테스트를 위한 파이썬 문법(4) 입출력

jinjoo-jung·2023년 7월 22일
0

CodingTest

목록 보기
3/9
  • 알고리즘 문제 풀이의 첫 번째 단계는 데이터를 입력받는 것
  • 그 입력을 받아서 적절한 알고리즘을 수행한 뒤의 결과를 출력하는 것을 요구

input()

  • 파이썬에서 데이터를 입력받을 때는 input()을 이용한다. input()의 경우 한 줄의 문자열을 입력 받도록 해준다.
  • 파이썬에서 입력받은 데이터를 정수형 데이터로 처리하기 위해서는 문자열을 정수로 바꾸는 int()함수를 사용해야 한다.
  • 여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다.
  • 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높다 이때는 list(map(int, input().split()))을 이용

< list(map(int, input().split())) 동작과정>
1. input()으로 입력받은 문자열을 split()을 이용해 공백으로 나눈 리스트로 바꿈
2. map을 이용하여 해당 리스트의 모든 원소에 int() 함수를 적용
3. 최종적으로 그 결과를 list()로 다시 바꿈으로써 입력받은 문자열을 띄어쓰기로 구분하여 각각 숫자 자료형으로 저장하게 되는 것
-> 이 코드는 정말 많이 사용되므로, 반드시 외우고 있어야 한다. 많은 문제는 공백 혹은 줄바꿈을 기준으로 데이터를 구분한다

  • 파이썬에서는 구분자가 줄 바꿈인지 공백인지에 따라서 다른 처리를 요구한다
  • 줄바꿈이라면 int(input())을 여러 번 사용하면 되는데, 공백이라면 위와 같이 사용
# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백으로 구분하여 입력
data = list(map(int, input().split()))

data.sort(reverse = True)
print(data)

공백으로 구분된 데이터의 개수가 많지 않다면?

n, m, k = map(int, input().split())
print(n, m, k)     // ex) 3 5 7

-> 파이썬에서는 입력의 개수가 많은 경우에는 단순히 input() 함수를 그대로 사용하지는 않는다. 파이썬의 기본 input() 함수는 동작 속도가 느려서 시간초과로 오답 판정을 받을 수 있다.
-> 이 경우 파이썬의 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 함수를 이용
-> sys 라이브러리는 다음과 같은 방식으로 사용하여 input() 함수와 같이 한 줄씩 입력받기 위해 사용
readline() 사용 소스코드 예시

import sys
sys.stdin.readline().rstrip()

sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip() 함수를 꼭 호출해야 한다.
readline()으로 입력하면 입력 후 엔터가 줄 바꿈 기호로 입력 되는데, 이 공백 문자를 제거하려면 rstrip()함수를 사용해야 한다. 이것또한 관행적으로 외워서 사용하자

  • 파이썬의 print()는 기본적으로 출력 이후에 줄 바꿈을 수행한다. print() 를 사용할 때마다 줄이 변경된다고 볼 수 있다.

출력시 오류가 발생하는 소스코드 예시

# 출력할 변수들
answer = 7

print("정답은" + answer + "입니다")

=> 에러 / 이유: 실행 결과를 보면 문자열 자료형끼리만 더하기 연산이 가능하다는 오류메세지
해결방법
1. str() 함수를 이용하여 출력하고자 하는 변수 데이터를 문자열로 바꾸어준다
2. 각 자료형을 콤마(,)를 기분으로 구분하여 출력

변수를 문자열로 바꾸어 출력하는 소스코드 예시

# 출력할 변수들
answer = 7
print("정답은 " + str(answer) + "입니다")

// 출력 : 정답은 7입니다 

각 변수를 콤마로 구분하여 출력하는 소스코드 예시

# 출력할 변수들
answer = 7
print("정답은" , answer, "입니다.")

// 출력: 정답은 7 입니다.

=> 각 변수를 콤마로 구분하여 출력하는 경우, 변수의 값 사이에 의도치 않은 공백이 삽입될 수 있다는 점을 신경쓰도록 하자

answer = 7
print(f"정답은 {answer}입니다.") // 정답은 7입니다 
profile
개인 개발 공부, 정리용 🔗

0개의 댓글

관련 채용 정보