반응형
오늘은 python에서 알고리즘 문제를 풀 때 도움이 되는 주요 라이브러리와 함수 등에 대해서
공부해보도록 하겠습니다.
내장 함수
sum( ): iterable 객체가 입력으로 주어졌을 때, 원소의 합을 반환
iterable : 반복가능한 객체 [ 리스트, 딕셔너리, 튜플, set 등 ]
result= [1,2,3,4]
print(sum(result))
출력 : 10
max( ) : 2개의 파라미터 중 가장 큰 값을 반환
a = 10
b = 20
print(max(a,b))
출력 : 20
min( ) : 2개의 파라미터 중 가장 작은값을 반환
a = 10
b = 20
print(min(a,b))
출력 : 10
eval( ) : 수학 수식이 문자열 형태로 들어오면 해상 수식을 계산한 결과를 반환
result = eval("(1+3) * 2")
print(result)
출력 : 8
sort( ) : iterable 객체가 들어왔을 시 정렬 - 반환 값 None -기존 개체 변형
arr = [5,2,3,4,1,6]
arr.sort()
print(arr)
출력 : [1, 2, 3, 4, 5, 6]
sorted( ): iterable 객체가 들어왔을 시 , 정렬된 결과 반환 - 기존 객체 유지
arr = [5,2,3,4,1,6]
arr2 = sorted(arr) # 오름차순
arr3 = sorted(arr, reverse=True) # 내림차순
print(arr)
print(arr2)
print(arr3)
출력 : [5, 2, 3, 4, 1, 6]
[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]
ord( ) : 문자를 아스키코드(숫자)로 반환
str=chr(65)
print(str)
출력 : A
chr( ) : 아스키코드(숫자)를 문자로 반환
num = ord('A')
print(num)
출력 : 65
isalpha( ) : 문자열이면 True, 아니면 False 리턴
text = 'abcd'
print(text.isalpha())
출력 : True
isalnum( ) : 문자열이 숫자면 True, 아니면 False 리턴
t = '1234'
print(t.isalnum())
출력 : True
filter( 조건함수,순회 가능 데이터) : iterable 객체의 요소들을 어떤 기준으로 필터링
반환 값은 자료형이기 때문에 list로!
string = '0003250'
res = list(filter(lambda x: string[x]=='0', range(len(string))))
print(res)
출력 : [0, 1, 2, 6]
itertools 라이브러리 : itertools는 파이썬에서 반복되는 데이터를 처리하는 기능을
포함하고 있는 라이브러리
- permutations: 순열
- combinations: 조합
- product: 중복 허용 순열
- combinations_with_replacement: 중복 허용 조합
from itertools import *
data = ['a', 'b', 'c'] # 데이터
result = list(permutations(data,3)) #모든 순열
print(result)
result = list(combinations(data,2)) #2개를 뽑는 모든 조합
print(result)
result = list(product(data,repeat=2)) #2개를 뽑는 모든 순열(중복 허용)
print(result)
result = list(combinations_with_replacement(data, r=2)) # 2개를 뽑는 모든 조합 구하기(중복 허용)
print(result)
출력 :
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')] #모든 순열
[('a', 'b'), ('a', 'c'), ('b', 'c')] #2개를 뽑는 조합
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')] #2개를 뽑는 순열 (중복 허용)
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')] #2개를 뽑는 모든 조합 (중복 허용)
collections 라이브러리 : collections 유용한 자료구조를 제공하는 표준 라이브러리
deque와 Counter를 가장 많이 쓴다.
deque
파이썬에서는 보통 deque를 통해 큐를 구현
deque는 리스트와 다르게 인덱싱, 슬라이싱 기능은 없지만 연속적으로 나열된 데이터의 시작 부분이나 끝부분에 데이터를삽입하거나 삭제할 때 효과적입니다.
from collections import deque
data = deque([2,3,4])
data.appendleft(1)
data.append(5)
print(data)
print(list(data))
data.popleft()
data.pop()
print(list(data))
출력 : deque([1, 2, 3, 4, 5])
[1, 2, 3, 4, 5]
[2, 3, 4]
Counter
등장 횟수를 세는 기능을 제공합니다.
리스트 같은 iterable 객체가 주어졌을 때, 해당 객체 내부의 원소가 몇 번씩 등장했는지 확인이 가능합니다.
원소별 등장 횟수를 세는 기능이 필요할 때 짧은 소스코드로 구현이 가능합니다.
from collections import Counter
counter = Counter([1,2,3,4,4,4,4,4,1,2,3,4,5])
print(counter[1])
print(counter[4])
print(dict(counter))
출력 : 2
6
{1: 2, 2: 2, 3: 2, 4: 6, 5: 1}
math 라이브러리 : 수학적인 기능을 포함하고 있는 라이브러리
import math
print(math.factorial(5)) # 5의 팩토리얼
print(math.sqrt(5)) #5의 제곱근
print(math.gcd(35,42)) # 5와 3의 최대 공약수
출력 : 120
2.23606797749979
7
반응형
'프로그래밍 언어 및 IT 정보 > 알고리즘' 카테고리의 다른 글
[Algorithm] 다익스트라(Dijkstra) 알고리즘 with c# (0) | 2023.05.29 |
---|---|
[Algorithm] 정렬 알고리즘 with python (0) | 2022.07.28 |
[Algorithm] 투포인터(Two Pointer) 알고리즘 with python (0) | 2022.07.27 |
[Algorithm] 슬라이딩 윈도우(Sliding Window) 알고리즘 with python (0) | 2022.07.26 |