반응형
자주 사용하는 라이브러리
- 내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수 제공
- itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능 제공
- heapq : 힙(Heap) 자료구조 제공(우선순위 큐 기능 구현)
- bisect : 이진 탐색 기능을 제공
- collections : 덱(deque) , 카운터(Counter)등 자료구조 포함
- math : 필수적인 수학적 기능 제공 ( 팩토리얼, 제곱근, 최대공약수(GCD), 삼각 학수 관련 함수부터 파이 같은 상수)
# sum()
result = sum([1,2,3,4,5])
print(resutl)
=>15
# min() , max()
min_result = min(7,3,5,2)
max_result = max(7,3,5,2)
print(min_result, max_result)
=> 2 7
# eval()
result = eval("(3+5)*7")
print(result)
=>56
# sorted()
result = sorted([9,1,8,5,4])
reverse_result = sorted([9,1,8,5,4]),reverse = True)
print(result)
=>[1,4,5,8,9]
print(reverse_result)
=>[9,8,5,4,1]
# sorted() with key
array = [('홍길동',35),('이순신',75),('아무개',50)]
result = sorted(array,key=lambda x : x[1],reverse=True)
print(result)
=>[('이순신',75),('아무개',50),('홍길동',35)]
순열과 조합
모든경우의 수를 고려해야 할 때 사용
순열 : 서로 다른 n개에서 서로 다른 R 개를 선택하여 일렬로 나열하는 것
{A, B, C} 중 3개 => ABC, ACB, BAC, BCA, CAB, CBA
조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r 개를 선택하는 것
{A, B, C}에서 순서 고려 않고 두 개 뽑는 경우 => AB, AC, BC
#순열
# A,B,C 에서 두개를 선택하여 나열하는 경우
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)]
# 조합
# A,B,C 에서 순서를 고려 하지 않고 두개를 뽑는 경우
from itertools import combinations
data = ['A','B','C']
result = list(combinations(data,2))
print(result)
=> [(A,B), (A,C), (B,C)]
Counter
횟수를 세는 기능 제공
리스트와 같은 반복 가능한 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 세준다.
from collections import Counter
counter = Counter(['red','blue','green','blue','blue']
print(counter['blue']) # blue가 등장한 횟수 출력
=>3
print(counter['green']) # green 이 등장한 횟수 출력
=>1
print(dict(counter)) # 사전 자료형으로 반환
=>{'red':2,'blue':3,'green':1}
최대 공약수와 최소 공배수
import math
#최소 공배수(LCM)를 구하는 함수
def lcm(a,b):
return a*b // math.gcd(a,b)
a = 21
b = 14
print(math.gcd(21,14)) # 최대 공약수(GCD) 계산
=>7
print(lcm(21,14)) # 최소 공배수(LCM) 계산
=>42
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 13 강 : 그리디 유형 문제풀이 + 백준 알고리즘 11399번 ATM문제 (0) | 2020.10.26 |
---|---|
[Algorithm] 12 강 : 그리디 알고리즘 개요(탐욕법) (0) | 2020.10.25 |
[Algorithm] 10 강 : 파이썬 문법 - 함수 (0) | 2020.10.22 |
[Algorithm] 9 강 : 파이썬 문법 - 반복문 (0) | 2020.10.21 |
[Algorithm] 8 강 : 파이썬 문법 - 조건문 (0) | 2020.10.20 |