파이썬 입출력 함수 및 함수의 람다 표현식

박성재·2020년 12월 1일
0

알고리즘 공부

목록 보기
2/9
post-thumbnail

출처: 이것이 취업을 위한 코딩테스트다 - 나동빈 저!
배너: godori님이 만드신 배너 메이커 활용

입출력

알고리즘 문제는 적절한 입력이 주어졌을 때, 그것을 사용해서 적절한 알고리즘을 수행해 결과를 출력해야 한다.

  • 파이썬에서 데이터를 입력받을 때 input() 함수를 사용해 한 줄의 문자열을 입력받는다.
  • 입력받은 문자열을 정수형 데이터로 처리하기 위해서는 int() 함수를 사용한다.

여러 개의 데이터를 입력받을 때에는 데이터가 공백으로 구분되는 경우가 많은데, 이때는 입력받은 문자열을 띄어쓰기로 구분해서 각각 정수 자료형 데이터로 저장하는 코드가 자주 사용된다.

이 코드는 정말 자주 사용되므로 외우고 있는 것이 좋다고 한다.

  • 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)
입력

5
33 78 90 12 83

출력

[90, 83, 78, 33, 12]

공백 기준으로 적은 수의 데이터 입력

소스코드

# n, m, k를 공백으로 구분하여 입력
n, m, k = map(int, input().split())

print(n, m, k)
입력

1, 2, 5

출력

1, 2, 5

입력의 개수가 많은 경우

  • 입력의 개수가 많은 경우 동작 속도가 느린 input() 함수를 사용하면 시간 초과로 오답 판정을 받을 수도 있다
  • 이 때에는 파이썬 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 함수를 이용한다.
  • readline() 으로 입력하면 입력 후 엔터 키가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하기 위해 rstrip() 함수를 사용해야 한다.

readline() 함수 사용 소스코드 예시

import sys

# 문자열 입력받기
data = sys.stdin.readline().rstrip()
print(data)
입력

Hello World

출력

Helo World

데이터 출력

파이썬에서는 print() 함수를 이용해서 데이터를 출력한다.

  • print() 안에 변수나 상수를 매개 변수로 입력받아 출력한다.
  • 각 변수를 콤마(,)로 구분하여 넣을 경우, 각 변수가 띄어쓰기로 구분되어 출력된다.
  • print()는 기본적으로 출력 이후에 줄 바꿈을 수행하기 때문에, print()를 사용할 때마다 줄이 변경된다.

데이터 출력 소스코드 예시

a = 1
b = 2
print(a)
print(b)
print(a, b)
출력

1
2
1 2

문자열과 수를 함께 출력해야 하는 경우 주의할 점

  • 단순히 더하기 연산자(+)를 이용해서 문자열과 수를 더하면 오류가 발생한다.
    1. str() 함수를 이용해서 변수 데이터를 문자열로 바꿔주거나
    2. 각 자료형을 콤마(,)를 기준으로 구분하여 출력하면 된다.
    3. Python 3.6 이상부터는 f-string 문법을 이용해 간단히 출력 가능하다
    • f-string을 이용하면 단순히 중괄호({}) 안에 변수를 넣음으로써, 자료형의 변환 없이도 간단히 문자열과 정수를 함께 넣을 수 있다.

잘못된 출력 예시

# 출력할 변수
answer = 9

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

TypeError: can only concatenate str (not "int") to str

변수를 문자열로 바꿔 출력하는 소스코드

# 출력할 변수
answer = 9

print("정답은 " + str(answer) + "입니다.")
출력

정답은 9입니다.

콤마로 구분하여 출력하는 소스코드

# 출력할 변수
answer = 9

print("정답은 ", str(answer), "입니다.")
출력

정답은 9 입니다.

  • 각 변수를 콤마로 구분해서 출력하는 경우, 변수의 값 사이에 의도하지 공백이 삽입될 수 있으니 주의하자!

f-string 사용 소스코드

# 출력할 변수
answer = 9

print(f"정답은 {answer}입니다.")
출력

정답은 9입니다

람다 표현식

파이썬에서 람다 표현식을 사용하면 함수를 한 줄에 작성해 간단하게 사용할 수 있다.

예시

def add(a, b):
	return a + b

# 일반적인 add() 메서드 사용
print(add(3, 7)) # 10

# 람다 표현식으로 구현한 add() 메서드
print(lambda a, b: a + b)(3, 7)) # 10

0개의 댓글