프로그래밍 언어 및 IT 정보/알고리즘

[Algorithm] python 알고리즘 관련 주요 라이브러리

Himer_torr 2022. 7. 29. 12:41
반응형

오늘은 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
반응형