목차
0. 빠르게 입력 받기
알고리즘 문제나 코딩 테스트에서 어떤 값을 입력받은 후, 문제 조건에 맞는 값을 출력하라는 문제를 해결할 때가 많다. 이때 기존에 입력을 위해 사용하던 함수인 input() 대신 조금이라도 더 빠른 함수를 사용할 수 있다.
그것은 바로 'sys'(system) 라이브러리에 포함된 stdin.readline()!
이 함수를 호출할 시 한 줄 씩 문자열로 읽어오는데, 주의할 점은 줄바꿈(\n)까지 포함된다는 점이다!
줄바꿈을 포함시키지 않으려면 stdin.readline().rstrip() 함수를 사용한다.
import sys
a = sys.stdin.readline()
b = sys.stdin.readline().rstrip()
print(a)
print(a)
print(b)
print(b)
→ 결과 :
여러 상황에 따른 상세한 사용 방법은 다음과 같다.
1) 한 개 정수 입력받기
import sys
a = int(sys.stdin.readline())
이때 변수 타입이 문자열 형태이므로 정수로 사용하기 위해 형변환을 해주어야 한다.
2) 정해진 개수의 정수를 한줄에 입력받을 때
import sys
a, b, c = map(int, sys.stdin.readline().split())
map()은 반복 가능한 객체(여기서 리스트)에 대해 각 요소들을 지정된 함수로 처리하는 함수이다. 즉 위 예시에서 split()으로 부여한 옵션에 따라 한 줄의 string을 분할한 후에 그것을 int형으로 변환한 후 a, b, c에 mapping해준다고 보면 된다.
split()의 default 값은 공백(스페이스, 탭, 엔터 등)이다.
3) 임의의 개수의 정수를 한줄에 입력받아 리스트에 저장할 때
import sys
data = list(map(int, sys.stdin.readline().split()))
map()은 맵 객체를 만들기 때문에, 리스트형으로 바꾸기 위해 list()함수를 사용한다.
1. 내장 함수
기본 입출력 함수, 정렬 함수 등
→ 파이썬으로 프로그램을 작성할 때 없어서는 안될 필수적인 기능들을 포함
- sum() : 합 반환
- min(), max() : 최소값, 최대값 반환
- eval() : 사칙연산 계산 결과를 수로 반환
- sorted() : 오름차순(default), 내림차순(reverse=True)으로 정렬
- key, lambda함수 등과 함께 사용하여 효율적으로 정렬 가능
2. itertools
파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능 제공
→ 특히, 순열과 조합 라이브러리는 코딩 테스트에서 매우 자주 사용함
- 순열(Permutation) : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것 (자리만 달라도 다른 결과임)
- 조합(Combination) : 서로 다른 n개에서 순서 상관 없이 서로 다른 r개를 선택하는 것
- 중복 순열
from itertools import product
- 중복 조합
from itertools import combinations_with_replacement
3. heapq
힙(Heap) 자료구조 제공
→ 일반적으로 우선순위 큐 기능을 구현하기 위해 사용됨
4. bisect
이진 탐색 (Binary Search) 기능을 구현하기 위해 사용
5. collections
덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함함
- Counter : 리스트 등의 반복 가능한(iterable) 객체가 주어졌을 때 등장 횟수를 세는 기능 제공
6. math
필수적인 수학적 기능들 제공
→ 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수
→ 파이(pi) 등의 상수
최근댓글