👉🏻 실전에서 유용한 표준 라이브러리
- 내장 함수: 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공한다
- 파이선 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다
- import 구문 없이도 사용 가능
- print(), input() 등..
- itertools: 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공한다
- 특히 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용된다.
- 모든 경우의 수를 고려해야하는 경우 효과적
- 완전 탐색 유형에서 소스 코드를 간결하게 작성하도록 도와줌
- heapq: 힙(Heap) 자료구조를 제공한다
- 일반적으로 우선순위 큐 기능을 구현하기 위해 사용된다
- 다익스트라(최단경로) 알고리즘
- 더보기
Dijkstra 알고리즘은 최단 경로를 찾기 위해 사용되는 알고리즘 중 하나입니다. 이 알고리즘은 주로 그래프 데이터 구조와 함께 사용되며, 특히 가중치가 있는 그래프에서 두 노드 간의 최단 경로를 찾는 데 유용합니다.
Dijkstra 알고리즘은 한 출발 노드로부터 다른 모든 노드까지의 최단 경로를 찾는 데 사용됩니다. 이 알고리즘은 각 노드까지의 최단 거리를 단계적으로 업데이트하면서 작동합니다. 우선순위 큐나 힙(heap)과 같은 자료구조를 사용하여 구현할 수 있습니다. 힙은 Dijkstra 알고리즘에서 노드를 선택하고 거리를 업데이트하는 데 효율적으로 사용됩니다.
Dijkstra 알고리즘은 단일 출발점에서 모든 노드로의 최단 경로를 찾을 때 유용하며, 음수 가중치가 없는 그래프에서 잘 작동합니다. 그러나 음수 가중치가 있는 그래프의 경우에는 벨만-포드 알고리즘과 같은 다른 알고리즘을 사용해야 합니다.
- bisect: 이진 탐색(Binary Search) 기능을 제공한다
- collctions: 덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함한다
- math: 필수적인 수학적 기능을 제공한다
- 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수 포함
👉🏻 자주 사용되는 내장함수
✅ sum()
- 다수의 데이터를 포함하는 리스트나 튜플 등이 들어왔을 때 그 원소들의 합을 반환한다
✅ min(), max()
- 가장 작은 값, 혹은 가장 큰 값을 얻고자 할 때 사용
- 인자로 여러 개의 값을 넣어줄 수 있다
✅ eval()
- 사람의 입장에서 수식으로 표현된 식이 있을 때 그 계산 결과를 실제 수 형태로 반환
✅ sorted()
- 내부적으로 리스트 같은 반복 가능한 객체가 들어왔을 때 각 원소를 정렬한 결과를 반환한다
- 기본은 오름차순
- 내림차순으로 정렬해야 한다면 reverse속성 값으로 True를 준다
✅ sorted() + key
- key 속성으로 정렬 기준을 명시할 수 있다
- 일반적으로 lambda 함수
- 위 예시에서는 두 번째 원소를 기준으로 정렬하는 것
👉🏻 순열과 조합
- 모든 경우의 수를 고려해야할 때 어떤 라이브리를 효과적으로 사용할 수 있을까?
- itertools 라이브러리
- 순열: 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
- {'A', 'B', 'C'}에서 세 개를 선택하여 나열하는 경우: 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
- 순서를 고려하기 때문에 CAB와 CBA가 다른 것
- 조합: 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것
- {'A', 'B', 'C'}에서 순서를 고려하지 않고 두 개를 뽑는 경우: 'AB', 'AC', 'BC'
- permutation과 combination의 약자
- 공식을 이용해 모든 경우의 수가 얼마나 될지 짐작해,
문제를 풀기 위해 모든 경우의 수를 고려하는 방법이 통할지 안 통할지 짐작하는 방식
- 순열의 수를 구했을 때 1,000만, 1억 단위를 넘어가는 경우 완전탐색을 이용했을 때 시간초과 판정 받을 확률 높음
🧩 순열
🧩 조합
- 묶고자 하는 리스트가 들어간 리스트를 첫 번째 인자, 몇 개를 뽑을 것인지를 두 번째 인자에
🧩 중복 순열과 중복 조합
- 중복 순열을 구할 때는 product 라이브러리를 사용
- 중복 조합을 구할 때는 combinations_with_replacement함수
👉🏻 Counter
- 파이썬 collections 라이브러리의 Counter는 등장 횟수를 세는 기능을 제공한다
- 리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지를 알려준다
- 파이썬으로 워드클라우드 등을 만들 때 사용되는 라이브러리 중 하나
👉🏻 최대 공약수와 최소 공배수
- 최대 공약수를 구해야할 때는 math 라이브러리의 gcd() 함수를 이용할 수 있다.
- greatest common divisor의 약자
- 최소 공배수 = a * b // a와 b의 최대 공약수
출처: https://youtu.be/W1SO2e5IaSo?si=5xiSG4W6WUWWeUz8
'Python > 이것이코딩테스트다with파이썬' 카테고리의 다른 글
14~15강 :: 구현 유형 개요 및 문제 풀이 (0) | 2023.11.15 |
---|---|
12~13강 :: 그리디 알고리즘 개요와 문제 풀이 (0) | 2023.11.09 |
10강 :: 함수와 람다 표현식 (0) | 2023.11.07 |
8~9강 :: 조건문, 반복문 (0) | 2023.11.02 |
7강 :: 기본 입출력 (0) | 2023.11.02 |