📖 Python

파이썬 - 유용한 표준 라이브러리

date
Jul 10, 2023
slug
python-library
author
status
Public
tags
Python
코딩테스트
summary
실전에서 유용한 파이썬 표준 라이브러리를 알아보자
type
Post
thumbnail
category
📖 Python
updatedAt
Jul 12, 2023 05:29 PM
  • itertools
    • 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공
    • 특히 순열조합 라이브러리는 코딩 테스트에 자주 사용
  • heapq
    • 힙(Heap) 자료구조 제공
    • 우선순위 큐 기능 구현하기 위해 사용
  • bisect
    • 이진 탐색(Binary Search) 기능 제공
  • collections
    • 덱(deque), 카운터(Counter) 등 유용한 자료구조 포함
  • math
    • 필수적인 수학적 기능 제공
    • 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수, 파이(pi) 등을 포함
본 글에서는 내장 함수, itertools, collections, math에 관하여 다루고 있습니다.
  • heapq와 bisect는 추후 유용하게 쓰이는 강의를 다룰 예정
 
 

자주 사용되는 내장 함수

  • sum()
# sum() result = sum([1, 2, 3, 4, 5]) print(result) # 실행 결과 : 15
  • min(), max()
# min(), max() min_result = min(7, 2, 3, 4) max_result = max(7, 2, 3, 4) print(min_result, max_result) # 실행 결과 : 2 7
  • eval()
# eval() result = eval("(3+5)*7") print(result) # 실행 결과 : 56
  • sorted()
# sorted() result = sorted([9, 1, 8, 5, 4]) rev_result = sorted([9, 1, 8, 5, 4], reverse=True) print(result) # 실행 결과 : [1, 4, 5, 8, 9] print(rev_result) # 실행 결과 : [9, 8, 5, 4, 1]
# sorted(, key=) # key 값을 이용한 정렬 array = [('홍길동', 35), ('이순신', 75), ('아무개', 50)] result = sorted(array, key=lambda x: x[1], reverse=True) print(result) # 실행 결과 : [('이순신', 75), ('아무개', 50), ('홍길동', 35)]
 

순열과 조합

모든 경우의 수를 고려해야 할 때
  • 순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열
    • 순열의 수
  • 조합 : 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택
    • 조합의 수

순열

from itertools import permutations data = ['A', 'B', 'C'] result = list(permutations(data, 3)) print(result) # 실행 결과 # [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

조합

from itertools import combinations data = ['A', 'B', 'C'] result = list(combinations(data, 2)) print(result) # 실행 결과 # [('A', 'B'), ('A', 'C'), ('B', 'C')]

중복 순열

from itertools import product data = ['A', 'B', 'C'] result = list(product(data, repeat=2)) print(result) # 실행 결과 # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

중복 조합

from itertools import combinations_with_replacement data = ['A', 'B', 'C'] result = list(combinations_with_replacement(data, 2)) print(result) # 실행 결과 # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
 

collections - Counter

  • 리스트 같은 반복 가능한 객체 내에서 원소가 몇 번씩 등장했는지 알려준다.
from collections import Counter counter = Counter(['red', 'red', 'blue', 'red', 'blue', 'yellow']) print(counter['blue']) # 실행 결과 : 2 print(dict(counter)) # 실행 결과 : {'red': 3, 'blue': 2, 'yellow': 1}
 

math - 최대 공약수 / 최소 공배수

  • math 라이브러리의 gcd() 함수
import math a = 21 b = 14 print(math.gcd(a, b)) # 실행 결과 : 7 # 최소 공배수 구하는 함수 def lcm(a, b): return a * b // math.gcd(a, b) print(lcm(a, b)) # 실행 결과 : 42
최소 공배수 공식
(두 자연수의 곱) = (최대 공약수) * (최소 공배수)
(최소 공배수) = (두 자연수의 곱) / (최대 공약수)
 
 

이 글은 유튜브 “동빈나” 채널의 “(이코테 2021 강의 몰아보기) 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기” 영상을 보고 작성하였습니다.