필요한 기능을 코드로 직접 구현할 경우 고려해야 할 사항이 많습니다. 입력값을 충분히 고려하여 설계했는지, 실행 도중에 오류는 없는지, 효율을 제대로 따졌는지 등 작성한 코드를 사용하기 위해 많은 검증이 필요하고 이는 곧 시간 낭비로 연결됩니다. 하지만 표준 라이브러리를 사용하면 검증할 필요가 없어지므로 이러한 문제를 모두 해결할 수 있습니다.
단, 많은 코딩 테스트에서 외부 라이브러리를 사용하지 못하게 하므로 표준 라이브러리는 적극적으로 사용하되 외부 라이브러리는 사용하지 않는 방향으로 진행하세요.
다음은 자주 사용하는 자료 구조나, 계산할 때 바로 쓸 수 있는 라이브러리입니다. 여기서는 간단히 소개만 하고, 각각을 사용하는 장에서 자세히 설명할 예정입니다.
1. heapq: 이진 트리 기반의 최소 힙 자료 구조입니다. 항상 정렬된 상태로 값의 추가/삭제가 이루어집니다. 우선순위 큐나 최단 거리 알고리즘을 구현할 때 많이 사용됩니다.
2. collections: 연속되는 자료를 가지고 있는 자료형에서 동일한 원소가 몇 개 있는지 확인 가능한 counter가 있기 때문에 해시 문제를 풀 때 유용합니다. 추가로 덱(dequeue) 자료 구조를 구현하는 데 사용하는 deque도 있습니다.
3. itertools: 경우의 수 문제에 사용하며 순열(permutations), 조합(combinations), 중복순열(permutations_with_replacement), 중복조합(combinations_with_replacement) 등에 사용합니다.
4. math: 복잡한 수학 연산을 대신하는 라이브러리입니다. 최대공약수, 최소공배수, 팩토리얼, 제곱근, 로그 등을 계산하며, 파이, 자연상수와 같은 상수도 존재해 수학 문제가 나온다면 이것만 있으면 됩니다.
5. bisect: 이진 탐색 기능을 제공합니다. 정렬된 데이터가 필요하며, 특정 범위 안에 원소가 있는지 검사하거나 몇 개가 존재하는지 확인하는 데 유용합니다.