Python/이것이코딩테스트다with파이썬

11강 :: 자주 사용되는 표준 라이브러리

묘걍 2023. 11. 9. 20:10

👉🏻 실전에서 유용한 표준 라이브러리

  • 내장 함수: 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공한다
    • 파이선 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다
    • 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